Xojo Hmmmm 🤔

I guess he meant which language and not which tool…I consider possibly python.

With his knowledge of the Apple Universe I think he is using swift or Objective-C.

1 Like

My choice too, using SwiftUI for UIs.

1 Like

In this case, you are doing Xojo wrong. It is Martin’s wish not to appear (too openly) with his full name.

I had that option in mind, but why then putting his full name on their homepage?

But it may also be related to my basic allergy that I am an absolute advocate of always acting with your full name and all consequences in official roles. You are either on the bus, or off the bus.

Everything I write I would also say or write GP like that. I’ve done the latter often enough, until it was too often :slight_smile: . And to be fair, I cut communication because it was pointless.

For me, the native versus cross-platform discussion is somehow missing a third parameter.

In 2023 one would probably have to speak of native-“something” and cross-“something” and work that out properly. “Something” today can not only be an OS, but also a sole functional area. Web for instance, or mobile only (mobile alone is already “cross”).

Remember, replacing “something” with “browser type” was still a complete nightmare a few years back, no matter what technology you chose to create the HTML/CSS/JS combo. At the end of the day, you had to program it “natively” for each browser type. It doesn’t matter which tool you used to program for the web. And till today, Firefox and Safari are behaving differently in some niche areas.

If you replace “Something” with an “OS”, then it has always been the case with desktop applications that “native” was simply better, more beautiful, more effective, you name it. And there have always been developers focusing strictly on one OS.

This will hardly change unless you either use browser solutions for an app: Electron, Tauri (and accept the pros, cons and limitations) or you use tools that create cross-platform desktop apps and you have to live with their logical limitations . Or one opts for pure web solutions, which is rarely a solution that would be accepted by customers in the enterprise area due to functional and security aspects.

When it comes to desktop apps, Xojo still has somehow a genuine advantage that they’ve been around for so long. I.e. you get a GUI simply put together. Younger programming languages that don’t officially focus on the GUI area at all (rust, go, …) don’t really keep up, at least not yet. And I bet it will take years if it ever happens, especially if you want a solid layout manager too.

There are many areas where desktop apps are still needed, even in the future. In the enterprise sector in particular, this will be unavoidable for a long time to come. So you either have to develop for each OS, or you use a cross-development tool. With cross-development, however, Xojo’s GUI is no longer state-of-the-art. On Windows, even Java Swing looks now more “modern” with the Flatleaf Theme.

But the GUI isn’t everything when it comes to desktop apps. Even a beginner will quickly realize that the code behind it must run stably. The code must be easy to update and due to the increasing and escalating legislation and regulations, aspects such as versioned documentation of the tools used, update cycles of the libraries used, timely security patches are becoming increasingly important. At these points, Xojo has been failing across the board for years. Especially with the current geo-political situation, one must not ship software whose internal libraries are ancient. It’s all playing with fire.

Take for example @thorstenstueker, who programs for a very regulated market, then there is nothing left but Java for cross-development. If you need a simple and stable platform that offers LTS versions with binding roadmaps over the years, then there is no real alternative IMHO. Especially not if you want to develop for mobile, web with only one language.

Of course, not all other languages will suddenly die because of Java, but @thorstenstueker simply has a valid point that there is nothing in Xojo that would not already be covered by Java today.

It took me a while to get his message. But it was my mistake, because I compared components of Java with other languages and then of course vue might win in the web area, go in the area of mastering the language quickly etc. But if you compare the current full package of functionality in Xojo and you compare it with alternatives then we are dealing with a different discussion.

Many things are comparatively more stable in Java than Xojo and have more functions, and of course there are layout managers. You rarely have to pay for plugins / tools. You get great IDEs for free, or at a fair price. Everything is open source.
You also get your binaries compiled without the end user noticing much of Java in the product.

If I had the task of programming a Tetris game for web, then I would probably only use Typescript, or WASM with Rust. And for firmware C++, Rust. For small tools, a scripting language or just bluntly the bash. For pure text replacement tools, probably Perl. etc. And Thorsten never claimed for instance that his company is using solely Java.

Despite Xojo and Java, there is also an authorization for other languages. Logical. macOS, Linux, Windows would not be reprogrammed with Java either.

But if you really look at what Xojo offers and compare it 1:1 with alternatives, then you can hardly avoid Java, or you wait a few more years for Mauri.

And as always, the option to develop natively per platform remains. You just have to ask yourself if you can afford it. There will be an unnecessary but exponential growth in complexity.

Moving away from Xojo will always remain painful, but so does a switch to other languages or updating to a new Xojo release :wink: . Moving to Mauri one day, won’t become an easy ride either.

2 Likes

But then not for Desktop on Windows nd Linux but only on MacOS. At least for production.

Oh i remember when xojo updated TOF full usernames were disclosed publicly without prior consent.

Yes Jeannot, you are right. Especially while the logic behind Java is good to understand for a Xojo programmer. Hence Xojo has many elements you’ll find in Java and even Syntax and also semantics of Java. As the inheritance works in Java like it does in Xojo or better: like it does in Xojo from it’s documentation.

And it is also totally true that I use more Languages than Java only. But I use the languages for the cases where they are still better than Java and not while I want to rape Python for full fledged Desktop Applications.

Java is the best to learn for Xojo Developers

Hence Java is a Language fĂźr Desktop Applications, Web and Mobile I would not try to use java for a firmware. Device firmwares are not needed to be written in java. I can write them in C (for example Atmega MCU) or in C++ (for example ARM based MCU while mostly running with RTOS or for example MCU from ESP with Free Rtos) or on Arm what we have done and what I am just now testing in my Laboratory: in Rust. I have also many times Python in use for communication Scripts and Solutions comparable to them. That is let me say my Development Stack. With IntelliJIdea, CLion, PyCharm. And yes, I can say: that is the ultimate Development Stack. Why? While I get the Job done.

The Alternatives are annoying more than they help to get the Job done

I also learned to program typescript and JavaScript and I was doing a dozen of Hand on Tutorials with Quasar, I learned to program with GO and of coarse I was looking and done many training lessons for Flutter/Dart. And yes, they all have, even C# Dotnet, many nice features. But at the end of the day: it was costing extremely nerves to get it running and to hold it running. C# on Mac for Desktop is not usable.

And even when and if MAUI will come. That makes no difference while I can’t work until it comes as production version.The risk with Beta Software is to high. And the next point is: when it releases, how long it will remain on market. And: when it is on the market, how long I will have Code Consistency? Questions we know all the Answers for but we tend to ignore them wile we don’t want to realise, that the Dotnet Platform is not a good way to produce Software for Customers cause after latest three years my Library is deprecated. and the next one looks then like it has nothing to do with the one before. And even then I need, to be really free with all I need, UI Libs like Telrik for MAUI. Costs again 1000,- Bucks per year. So my question: why should I? For what? Citing @Jeannot : „Waiting for MAUI seems like waiting for Xojo perfect Release Bugfree“ and I would want to add: with Android and mobile is full blown and all Hardware abstracted.

every Language where it fits the best, so never Java only

When I had to decide for my Development stack I was already an experienced Java Developer. Sounds weird? I was developing in that times more embedded Firmwares then Desktop Solutions. And yes, I was looking on all alternatives and I am still looking for all Alternatives. Why I am doing that? While learning is fun, programming in new Languages is fun and while I always get back to my own Stack. While it is consistent. Quasar for example developed in the actual Version of October last year…I would have to invest five or six days to get it to todays Variant. This in a customers project and I can select the place I get my funeral. Nit a good Idea.

Languages like GO coming with a high integrated Risk

Coming to GO: yes, a nice Language. Two things are annoying. Loops until I need to call a Psychiatrist andthe second: repeating of Variable definitions. Remembers me on the beginning of object orientation in Freepascal. That really annoys in Development. And on top: the Libraries are rare. While I can select for example for Office automation in Java environment a really big Set of Libs I have one in GO. and other Libs too. When this one get’s deprecated: that’s it.Howdy. No chance anymore.

Deprecated Libraries or what you should never use

And so we come also to best practices. To use deprecated and old Libraries has nothing to do with BEST PRACTICES. It has to do with unprofessional work. While there are security Risks. I saw for example one in Log4J. I never used it. Others ignored that warnings. Why? while they believed they know better and while it was really comfortable. The Bill came fast. And that is also with every JavaScript Library you use,with every Compiler you use,with every System Libs (Dylib, DLL or SO). You have the risk that it will go wrong. And that you do not know about means ot there is no error.

Considering Xojo is buying a Horse with some problems

Evaluating a Language and it’s ecosystem has to take a look on all of this factors. Doing that i can’t see what xojo is doing. But I can see that they have lots of not actual Libraries inside. For Javascript for example, Bootstrap and many more. So I have to realise that Xojo has a Problem: a security Problem. Beside that there is the Problem with the functionality. Writing Applications today means also that I need Threading. That Xojo is not providing. The other way around, their CEO means that Programmers in Xojo Environment are not able to handle it and Threading would lead to problems with Glitches the Customers will have. There are many points a professional Programmer will have his problems with that Language. Beside that I have no Github Support, no chance für using another IDE (and yes, the IDE is crap,somebody which uses IntelliJ, Eclipse and Netbeans every day knows what is functionally good and what not. So Xojo is no alternative for Development while it is not fitting the fundamental needs for Software Production. From which Site you ever look on it: it is a Language for Citizen Developers and not for professional Developers. It may be one in history. But today even The Xojo, inc. claims that it is for Beginners and Citizen Developers. Sometimes it comes up that it is even Low Code but from this statement I want to have distance: Xojo needs as many lines of code like every other Programming Language.

Always the best Solution when only one Platform: use the native Language Ecosystem

So we may look for more adult Languages. If it is for one Platform only like Android (Android Studio), IOS or MacOS (Xcode) of Windows (Visual Studio) you may have immediately a good IDE wo work with. And this IDE’s coming up for free.There you can do the development for one Platform and that in a professional wise. But what is with Multi platform. What is if I want (and I often had that Case) an App work on IOS, Android, Linux and Windows, MacOS and even Unix and the Web? The same App for all Platforms? Small hint: it will not work. The same App with One UI and one Code is not possible? Is not? It is. I would say: the only Solution which can do it is a Solution written in Java. So I can decide to simply write the Java App as CodenameOne App and I will get all I need for Desktop and Mobile and even Web (as a Javascript App). Or I will choose JavaFX. While using Gluon Mobile and JPro.One I can provide all Platforms from the same App. Without Limitations. The pro for JavaFX in this Case: with the SceneBuilder you have a pixel perfect Drag and Drop UI Designer. Fits all needs definitely and is CSS driven so you can do it lik you want. And it is a perfect Solution compiled with GraalVM for Mobile and with JPro.One for Web. No Problem. All this stuffs can be done with a simple JavaFX Application. No need for anything. Simply JavaFX.

Real Cross Platform Programming for all PLATFORMS in One Language

There are many Solutions where you can build for a few platforms. But none for all of them with native performance. While it is NOT JavaScript but a simple native running UI.

Most Cases where you need the same App is for Mobile. Every Developer developing for Mobile has this problem. In the most Cases I would here consider CodenameOne. While it has a simple UI for both and it is in both cases native compiled. Yes, you got it right: CodenameOne on IOS compiles with XCode. And while CodenameOne is under MIT License you can compile with it even without loosing one cent.

So I have many solutions on the market but no one for all platforms together. Except: Java.

And while I did not found something better than this I am using this mantra. While it is my every days Workflow. And guess what? I need to do that Job only with deep knowledge of one Language: Java. and not many languages. I know the people that say all day: I am 100 years in this Job and you would not be able to compete with my Amount of projects. Hmm. Hence I have in my Company since 1987 many projects done also with my employees where I was always and in every project leading and controlling and reviewing all stuffs I can say: I have a bit Experience. And this Experience showed me over the years: Consistency is needed.

So may everybody believe that his X Platform Solution is the best one: I know that it is not. At the end you need long time supported Solutions where you have the security that todays Code will tomorrow and next year compile without any problem. And that you have only with Java.

1 Like

Single-file binaries is attractive to me, as well. One of the reasons I like golang. The Simplicity of Single-File Golang Deployments | Amazing CTO

That said, a complication with using this with GTK is the LGPL; consensus is that you need to dynamically link; which the gotk4 binding doesn’t seem to support (and defeats the single binary objective, anyway).

No, the GO Binding is not allowing dynamical linking. One of the bad Parts when not writing Open Source software. According to the GPL License your entire Software is becoming open source when compiling with a Library under GPL. But for Google that is not from Interest therefore they did not implemented it. Possibly it will come. Or not. You’ll have to wait for it.

Again, not true. The gotk4 binding to GTK is independent of Google: GitHub - diamondburned/gotk4: Autogenerated GTK4 bindings for Go

Go allows for dynamic binding, and a dynamic version of gotk4 is apparently in work: Proposal: Runtime dynamic linking ¡ Issue #74 ¡ diamondburned/gotk4 ¡ GitHub

The point was the licensing. GTK is under LGPL, so you don’t have to open source if you dynamically link to it. But then you don’t have a single binary. That’s not a technology issue at all.

And don’t get me started on Java’s licensing debacle.

And now? Which licensing debacle please? That would really be from interest! With OpenJDK there is no licensing issue at all.

And one more: look into the Issues, enough for me. Really. Not usable now. But do what you mean you are smarter than others.

And again: no Answer. Why? While there is no licensing debacle and there was never one. OpenJDK and that’s it. There is no need for this starting of a thread with uhhhh java is not licensed. Stupid when not able to read. Azul Java, Liberia Java are not licensed by Oracle but OpenJDK. And they are not in any license war.

No instant answer because I have other things to do, but to close the thought, the Java licensing issue caused many companies a lot of headaches (e.g. Which free version of Java can I use for production environments and or commercial purposes? - Stack Overflow) Yes, you can go with OpenJDK; think about that.

All OpenJDK I named are allowed for commercial use from the beginning on. There was no licensing Issue. The licensing Issue was cleared by sun before making it open Source: the closed source parts were rewritten, Java OPENJDK is open Source with Classpath Exeption. And GraalVM community edition is also free for any commercial use of the compiler.

My customers got OpenJDK Builds. Many of them were using SAP Machine or the Adoption from IBM and the Rest Azul. There was never a Licensing Issue. not one second. There was a group of people too stupid to read while even Oracle was giving exactly that information: if you do not want to have any Support you can use OpenJDK. and Oracle all time provided openJDK

1 Like

As the rest of a response regarding unresearched posts and referring to people as “stupid” would potentially run afoul of the forum rules about ad hominem attacks, I won’t.

@npalardy, how about we create a sticky topic right at the top of the forum called “Former XOJO Developers: Java is the GOAT and Here’s Why”. In this thread, anyone who wants to repeatedly advertise and extol the virtues of Java can do so in one place, and new Xojo refugees can quickly take it all in. If that’s their soup, they can move on and download whatever licensing-compatible version of Java works for their organization and get back to work; the forum will have helped another. If not, they can engage in discussions about other ideas in the rest of the threads without the spam.

It is unarguably the case that Java is a mature ecosystem, but has its issues like any other. If your day-to-day business depends on the kind of stability it offers, you would be hard pressed to find an alternative (though I would suggest, if you’re starting out there, you seriously consider Kotlin). But to say alternatives are “not usable now” with the implication of “why bother” suggests not pursuing anything innovative around the alternatives. I think discussions in the rest of the forum have been personally informative toward that end.

For my part, I’ve got the Java message and don’t need to see it again, so I’ll be availing myself of the forum’s ad-blocking capabilities.

2 Likes

I suggest no more responses for a couple of hours. Go code some. You’ll feel better.

2 Likes

Sorry but to use GO as Desktop solution is not even a Release but in Beta state, will be out once and possibly usable. but not now. It would be a regulatory and a maintenance nightmare. but at the end: you have to decide. and, I have to say, what kind of Java Thread you ever builded, is not my problem. I have NO problems using Java. Really no. and I have also not one of the Issues I have with Xojo and there were many of them especially needed workarounds. So that I don’t have with Java. Possibly while it is matured and while the release Structure of Java is different to all others. Starts always as incubator for new Features and also for new Builds and goes then in early adopter phase and only after that is gone in Release Phase. And yes, I know that there are less Bugs than in the most other languages.

To use Go and GTK as Cross Platform Solution you should remember that GTK was even not working on MACOS before a few weeks. That would be the nightmare for that platform and it was for example for Inkscape the total disaster. Inkscape Mouseevents stopped functioning after a GTK Bug after changing to MacOS 13.x

Somehow that platform is completely immature for this cases. It is while the GTK Developer are not really interested in Cross Platform but in stable and reliable Linux. That makes Differences also for you. While it is reliable and stable on Linux it does not mean or implement tat it works the same way proper under Windows and MacOS. And there are today in the GTK Implementation many Showstoppers which are not corrected until now. I guess you know, if not: that is why I said that is not usable at the Moment.

Let’s look: QT is usable and reliable. No Question. Dynamically linked also to use open source while Classpath Exception.

If you describe an Alternative to Java it should be one which is usable in professional environment and not for Hobby applications. The rise that the Application falls apart after next MACOS Update is too high and also the risk that it will stop working on Windows is high.

Understanding what you wrote correct? Go with GTK in Single File Output. So let’s do analysis. Is GTK Go bindings available= yep. is it available as stable version? No. Following GO Website not.

So what you tell me is, a not stable Version I should consider to use in a commercial Software? Are you Crazy? That results in a disaster for my Customers and for me. This Version isn’t stable and it is probably not secure, it may have problems we both do not know about. So what you are speaking about? About Java in it’s LTS Version where I have for the time until 2030 Support for my JDK in version 17 LTS or do we speak about a non stable marked Library for GO?

The GO 4 Binding generator is definitely far away even from Beta state and more far away from using it in production environment. it has the Version 0.0.5 (that means: Alpha Stadium). is that the wise you provide Software to your Customers? That isn’t usable in a commercial environment where people rely on with their Jobs and incomes.

And the dynamical runtime Linking you wrote about is not even released. THAT IS DEFINITELY not usable. We are speaking about professional Toolchains and not about toys which will work or not.So what you wrote was wrong and you spotted that it is not okay to say then not usable? Sorry, what you presented was not usable at all in a commercial Software Development. Nothing to do with go but with the not ready GTK.