Criteria you'd use to pick a tool

With the future MAUI will be close, but no Linux.
And XAML is not a dream to use.

Uno?

Theonly Language I found where I can use all the logic on all platforms without any modification is - I am really sorry for all the C# and C++ lovers - Java.

And… what will you choose if you do not want to create your own business (search an employee job) ?

What the company needs. Choosing Java and C++ to learn is definitely the best option to do. Because all other Stuff you’ll be able to learn really fast. If a Company where I want to work would use Xojo I would run away from the offer while…

I agree, it seems like Java is very good for most platforms and most applications. I do use C++ for creating apps that require high performance, such as graphics and electronics.

Electronics is mostly python, since there is a large number of people and forums that use the language.

I must say that the last time I heard about it it was many years ago and it wasn’t complete or stable. Need to revisit it again to read about it.

I’m not a C# lover, but I’m certainly a Java hater. :smiley:

So was the guy who invented Kotlin that was initially just a transpiler to convert a better language to Java and use the JVM framework. Now it goes directly to bytecode or machine code.

After a fast play with it, still feel the same.

I am producing electronics for medical environment. We use Python never for production. Python was never and will never be better than Java. All I can do in python I can do in Java. and even more. If my nearly entire Software and especially always the Guy is programmed in Java, for what I should need and use Python? There is no need. What we use is Java for GUI and all Linux/Windows/MacOS/BSD Programming and C++ for Firmware Programming and for Rtos programming. There is nothing else at the end.

We had Python Tools for communication but after we found out that they are sometimes real troublemakers we changed them into Java Software and where it was needed we wrote Drivers for Java. Even our GPIO Framework for Raspberry we had to rework in Java. (No, Pi4J was never an alternative).

So as far as I can say: we do industrial electronic development and use Java for GUI and for Web (most Web-Applications I wrote in Java Wicked, our Web Applications are always Server based) and also for command line development. We had Xojo Apps out but the problem was, that authorities are not accepting a deprecated Software). So we changed to Java environment.

We use for our Web Interfaces often WebSwing which has the ability to provide a Java Swing Application as a web Application running entirely on the Server. That is convenient and runs like a charm.

So: no experiments in Stuffs like Xojo for us anymore cause the experiment was more than expensive for us (license costs of Xojo are not interesting n that calculation, we had to exchange the Xojo Application while it was deprecated Version of Xojo and the new Version had not even the ability that we could write our Software in the new Version). Next time I want to do an experiment I will build a house. That is Cheaper and makes less stress.

This is really exciting! You mention that the firmware programs are written in C++ and do not use Pi4J. Is there a library that is stable with Java on the Raspberry Pi, or do you use a C++ library on the Raspberry Pi and then send the information to Java to show the data on a GUI?

It would be nice to write a GPIO program on the Raspberry Pi that allows microcontroller functions while being able to create a GUI with the Raspberry Pi. Could this be created with just Java, or would it be better with Java and C++?

Is this a special library that your company created, or is this a public library that I can use?

We wrote an own library for our needs and that’s it. This while there was only pi4j. But we needed something proprietary with more functionality. So we wrote a c++ krrnel module and wrapped it for java.

1 Like

My company was developing it while I decided that the existing stuff isn’t that what I need. So I decided that we do have to develop our own

The firmware is written in c++ with mplab and behind that there comes the interface. Often I use api interfaces while we need to isolate all outputs (body float and cardio float) from the power supply and from all others. Let’s see the example we have ten dpi channels to the channel firmwares. Now we have simply ten hour ports for selecting active spi client and communicate with spi interface with the hardware interface of the mcu. Means we have for every spi connected firmware an own api. This we use for our java software. Often we have also serial communication. All we do is implementing the communication api on both sides and it lives. Our javagpio is a bit more stable and reliable than wiringpi. Most you can also do with pi4j . Including spi bus. Now we can communicate between mcu and Pi and java GUI directly in one Codename. For me the best way. With max 150 Mbit per second it’s fast enough mostly.

As Isolator we use often silicons si8641bb or bd series with external discrete signal controller for spi active switching / slave select. Works more reliable than analogs adze spi isolators.

1 Like

MPLAB has a wide variety of good chips, and are very stable. Although I found MPLAB programming examples to be poor.

I will look at Pi4J and see how stable it is. It sounds very exciting

Pi4j is very stable. But it has a few restrictions I could not accept. For me it was so that it was less complex to write a new going manager for example with a more flexible soft pen generator. For normal uses it should always be a nearly perfect solution.

Another thing was the gluon driver which was deprecated. So we also had to rewrite while pigpio was no alternative. So we done That job for our uses.

this has drifted way away from what I was hoping what I thought might be considered

If you had to stand in front of the board of directors/CEO etc and say "I was given the task of setting overall technical direction for our company and it development efforts I here what I think … "
How would you justify the choice you made ?
Why this vendor and not some other ?
Why this language and not some other ?
What pros are the about this vendor ? cons ?

What other kinds of questions would you expect to be asked when making such a presentation and how would you justify your choices ?

Thats kind of what I was hoping to see

That I wrote above. What you want more? Ide and Language vendor havelock be reliable and stable. Therefore no quick and dirty shit like xojo for production. Alternatives like flutter: idäf it’s not really cross platform: nope. Igors not a compiled Language but a script language: nope. Use this filter and the results are c++ and java. Rocking platforms. Is using other stuffs: for special purposes. But writing one app with flutter and the other in c# and the next in c++ is loss of time and money.

And then it comes. The never rnding discussion why Python can do all better or other languages what ever.

My experience: professional languages and not kids toys. Playing I can do with xojo. Programming with java and c++. So in the end there is no real alternative. C# but no GUI for Linux …but it’s a question of platforms. Only windows desktop would be okay with c#.

  1. A language that works cross platform (desktop and mobile)
  2. Allows use of declares since no language will have 100% customization of all methods and controls
  3. Can create dll’s, so, etc.
  4. Allows implementation of future libraries. An example is the Vulkan graphics library has been created for quite a while, and has not been converted to many other languages. Should conversion be needed?
  5. Drag-and-drop control interface.
  6. Allow mostly full control customization from IDE
  7. Allow use of interrupts
  8. multi core, processor execution
  9. The structure of the language will need to be simple
  10. Have a context-sensitive online/offline help system
  11. Have an intellisense system to complete commands at the current location
  12. Allow easier implementation with Microsoft’s Component Object Model (COM)
  13. Have the code allowed to be modified by contributors, while maintaining a ‘gatekeeper’. An example is someone can create code for the language and the ‘language gatekeeper’ will be allowed to check and implement the code or run tests and show that the code is ‘too buggy’. No individual person or team can create all the code needed for the many applications in the wild anymore.
  14. Have a high speed-of-execution.
  15. The ability to execute machine code
  16. The language should be verbose and human-readable
  17. Once an internal method has been created, it is not deprecated. Overloading can be implemented.
  18. Will create native executables (eg: .exe on Windows, etc)
  19. Allowed to create websites which execute programs quickly. No long delays between starting and loading webpages
  20. The language can be implemented to control other languages (example: VBA in Excel, Word, etc.)
  21. Ability to report bugs, and 1) contribute to make the code work, or 2) allow the database to record and keep the data for fixing/reporting bugs
  22. Uses 32 and 64 bit programming (There is soooo much code for 32-bit programming that is used and can be converted to 64-bit, and this can’t be ignored.)
  23. Easy to install the IDE (doesn’t need to install 15 supporting libraries/programs to be installed)
  24. Easy to install the final completed program (possibly an internal innosetup-ish-like program?)
  25. Have one large line of code that can be saved in text (similar to the VB6-type code). Having multiple areas of code (press pushbutton action event will only show code in the action event is poor in my personal opinion)
  26. Debugging data shown in hexadecimal format.
  27. The development team will need to use each of the operating systems (creating the language on one operating system and porting it to others has MANY issues for native OS users)
  28. Low startup time for the IDE (not waiting 2 minutes to load a large program)
  29. Allow updates to the program, as updates to the IDE/programming language can break existing code
  30. Ability to support/create plugins
  31. Allows code to be organized, and clearly maintained (Ability to make modules, classes, etc)
  32. Did I say backward compatibility yet? If I did, its worth saying it twice :slight_smile:
  33. Allows creation of reports
  34. Allows the ability to use creation templates for making programs (possibly wizards or making custom templates)
  35. Code highlighting and syntax colouring
  36. Low memory and size of final program
  37. Must execute graphics fast
  38. Allow the use of code examples (VB6 still has billions of code examples)

There is more that I can add, and this is a good start. I hope this helps further the discussion :slight_smile:

Do the CEO and the BOD do know anything technical at all? At Opel/GM we always joked that the deals were done at golfing.

CEOs don’t need to know the technical details, really. CEOs (should) think strategic and longterm. At best you must need to do a very high level overview. Oh gods, I hated that term “30k foot overview”.

Eugenes list is very thorough. But it’s not for the CEO.

Does anyone already have experience with the selected languages?
Is there some training available?
How would you need to plan training?
Can you get developers in the selected language?
What is the status of the tools/IDE?
What is the long term strategy with the language or is it the Google playground of the year?

2 Likes