Why go for cross-platform desktop apps in 2023?

I must be living a charmed life then because over the last 5 years I have used Python for the overwhelming majority of my paid work and have never encountered this.

Look! A straw man!

The question is not
“Is Python faster than Java?”
it’s
“Is Python fast enough for the task in hand?”
The answer to the latter is invariably “Yes”

By default Python compiles to bytecode, just like Java. Sure Java is currently faster than Python ( there’s changes incoming for Python bytecode to speed it up though ) but in terms of performance it’s a very mid-table language so in reality you’re making the same call - will Java be fast enough for the task in hand?

In the last 5 years I’ve only made one small desktop app (ime there’s not much demand for desktop apps anymore), I used wxPython and it was absolutely fine.

2 Likes

@thorstenstueker

Can I ask if the “Java for Beginners” course on Skillshare is yours? I am looking for a Java course for beginners, and I saw the coffeecup logo, which is like yours.

Anyway, I am going to take that course to learn about Java.

Python is the most popular programming language in the world at this moment. However, I agree with you it is a scripting language, not a real programming language, despite the fact you can do much with it.

edX have a good selection of courses from well known institutions ( Harvard, Stanford, MIT, … ) and companies ( Amazon, ARM, IBM, … ), I would check those out first before choosing a course from a random individual.

No question and we use python also for some cases. But not for Webapps or for desktop apps. Not everything possible is useful.

lol yes, 50% of Pro coming from Paul

I can recommend this course: https://www.udemy.com/course/java-the-complete-java-developer-course/ if you don’t mind an Australian accent (I don’t). Well structured, precise a lot of exercises, reflecting most changes in the latest JDK LTS.

For those not knowing: Never pay the official price on udemy. Check the page for a few days / weeks. They have promotions all the time, and you will get courses for 10-15 EUR. Which is a no brainer for a course like the above with over 100h of excellent content.

Interesting side effect with the above course, one of the rare ones using IntelliJ IDEA, so you will learn the IDE as a side effect.

Edit 1: only down side (if any). Tim “only” covers JavaFX not swing. But if you learn JavaFX Swing will be easy too. Plus there are many course on Swing too. It doesn’t really matter IMHO what you are learning first, it is more important to start.

Edit 2: With JavaFX and the free of charge Scene Builder - Gluon for Desktop you will encountered a very Xojo-ish experience from a layout perspective, with the only difference that everything is working and of course you can build an exe / app / deb or an installation package for all OSes including all necessary libraries and if you wish your openJRE, so that your end users will see nothing from Java, if they don’t dive deeper. Granted your IDEs will not look 100% “native”, but on WIndows and Linux still much better than the current Xojo binaries :wink:

Ah I just came back from car repair… I was not writing this or any other Course on the Web for beginners. I wrote many Libries or was a part of the writer of Libraries which you will find in your ever¥days use if Java.

At the Moment I’m in the middle of a Mobile Project generation for JavaFX for Open Source use while Gluon was not providing anything under MIT License.

I sadly have no time for Teaching and if I made small Tutorials that where only fast Screen recordings for five Minutes but never Tutorials how they should be: planned and with all the needed side knowledge.

But I would follow the recommendation of Jeannot he has his reasons why he decided to tell you exactly that Tutorial. Mostly while he done it by self.

1 Like

Mostly, I’m at 90 percent :slight_smile: but 120% impressed.

Thank you all for the suggestions. I followed the Udemy link, and this course seems indeed very interesting. As suggested, I will wait for a promotion.

Thank you all again.

Chris

My pleasure, I paid some money on completely crap courses on udemy but this one is current and well structured. The audio and video quality is great, the used slides (which you can meanwhile download, udemy blocks screenshots technically) top notch.

In addition, his voice is pleasant and general topics that you probably already know, loops etc. can also be played at 1.25-1.5 speed without losing the thread.

And he’s been doing it for years (has also been working with Java for > 20 years) and that rarely happens at udemy, if at all. Seen in this way, I even find the normal price of 130 EUR very reasonable. But since udemy has special offers every 2 weeks, I’ve got used to waiting. The monthly subscription for 25 EUR is not an option for me. You can cancel any time, but that means the course and the documents are gone.

Good luck for your learning! The only downside I see so far: when you think you’re done, there’s new content again :wink:

That’s probably the only challenge with Java. There are tons of resources, but a lot of them are often older and it’s a bit more difficult to find the right information. But that is logical for a 25-year-old language compared to a new hype like Go or Rust.

However, it gets much better once you get past the beginner stage (which takes a few months). You can clearly see that Java is often used in an enterprise context, and nobody ever has time to tinker with beginner tutorials, or there are certainly such courses for internal onboarding, but they are not made public.

In addition, the Java ecosystem is very powerful. For example, there are at least 3 different ways to read input from the console. And that runs through almost everything, so that you often don’t see the forest for the trees and accordingly you have to invest more effort to get specific answers about your surroundings and requirements.

Everyone learns differently, for example I am often a friend of just getting started with a program in a new programming language and then acquiring more and more knowledge. Unfortunately, this doesn’t work so well with Java (I would even say , with burnt fingers, lost lifetime!)

Not only because of the object orientation, which runs through everything, but also because of the general structure, the ecosystem, classes, modules, etc., you should acquire the concepts of Java in a structured way. The advantage is: you learn faster and faster and it’s more and more fun.

But I love the certainty that more options are simply better than restrictions, you just have to struggle through it but you will be rewarded very quickly.

The advantage of high-priced Apple hardware is certainly that you don’t throw it on the wall so quickly :slight_smile:

By the way: it’s not just old men who teach Java, I’ve also had a lot of help from very young developers. It looks to me like Java has seen a kind of “revival” since Java 11.

The break between Java 8/11 und the 7,6,5… and so on is big. That’s why many people had to change their thinking. Reflections if one keyword and also changes in the class inheritance and so on. So it is reality that between the old Java World and the new one is a big gap. Starting with Java 11 you have the security that your code will work also in 17/19/20 and foreseeable also 21 with smallest changes. Only problem you may have it: you need also to update your libraries to the next stage. Normal. And so people learning Java today having a massive amount of functionality. But you can also say: with a lot of reliability. Javas big functionality is: change your compiler and compile new, it will work. And so you can provide your newest Release for example for Apple Arm from the first beginnings on. Once JDK is compiled for your Platform you can use all your Java Software on that Platform. And starting with Java 14 it became even more portable while you can use package to produce installable packages like DMG for Mac, This is for the programmer a bit of heaven.

The most interesting Part is of coarse the fact that your Software once written (JavaFX or Java Swing, Vaadin or CodenameOne) will run on that JDK also on the flaming newest platforms. So for Example Windows Arm 64 Bit. Or X86/64 Bit. Without Limitations. And for the most Platforms you also can use NativeImageKit from Liberia (Bell-Software) which compiles to a native executable from a Jar File. That makes it extremely portable for all Platforms, with JavaFX for example you can even compile for IOS and Android (Gluon mobile goes that way).

As you can see: Java produces always reliability and sustainability for the foreseeable future. That makes it a fun to use while you have Silence.

Why I am writing all this? While I want to answer also to he automatically upcoming question: Why should I learn Java. That’s why. Whyle your time / money invest for writing your App is not useless in 5 years or even ten years.

Yes, times are changing. A year ago it would have been impossible for me, on principle alone, to agree with you and your eternal and brutal Java mantra! :slight_smile: .

But a little un-learn and re-learn has worked wonders for me.

What’s happening right now in the direction of native compilation is more than exciting (even if you don’t really need it, poor performance is really not the problem with Java).

Of course there are also reasons for other development tools, but on the one hand Java can integrate a lot of languages, and on the other hand most readers come from a Xojo environment.

If you want to map everything that Xojo offers in one language professionally (even more professionally), then I don’t know of any other free tool that it is capable to achieve this.

I don’t know that anyone can really make that claim absolutely. Java 11, Python 3, .NET Core, all broke things, but in ways that the community for the most part accepted, because there were real, attractive benefits to it (and in the case of Python 3, which REALLY broke some things, there was a generous, decade-long transition period where Python 2 remained fully supported and even got some enhancements).

When .NET 8 comes out November-ish, I will adopt it if for no other reason than the new FrozenDictionary class which will give me a real performance boost in an app that is caching a great deal of indexed collections in-memory – but that means no turning back because that functionality didn’t exist prior. It is a solution I can’t share with someone who is constrained by various corporate policy to, say, .NET framework 4.8.

That said, and to your point – people who want to stay on framework 4.8 in .NET for example will not find it suddenly not working, even though it has been a few years. There will come a time when difficulties with that version will become a personal problem – but not until enough time has passed that it’s both reasonable and wise to do a rewrite anyway.

1 Like

Java 11 was not breaking that much things only were in Java 8 a big pile marked as deprecated. That projects can be supported until 2030 (Think why they done that? Exactly. While that things were not broken but deprecated from the first Release of Java 8. That is not broken like in Dotnet always: passed away. That is: with years of deprecation warnings!!! And stupid people that wrote: broke my Code. No. Java 11 had deleted what was deprecated in Java 8. That was in 2014. While the Software Vendors needing time:you can still compile in the Java 8. And that is STILL bug fixed, that is still under security Updates until 2030. In the World of Dotnet you’ll not find that. Definitely you are funkte up after two further years. So I can’t really get what you want to tell me with that comparing? That Java has technical Support, security Updates and Bugfixes for Java Release 8 until 2030?

That is Reliability. And that works. And yes, they changed Stuffs. So you can decide when old Java 8 User: using further Java 8 until 2030 (16 years Support for the Version) or changing your Code while you see: oh, I may release after 2030 my Code. Yeah, then you may need to rewrite Parts of it. Sorry for that. But you do not need until 2030. So you could fdevelop it over a long time.

When and if on Java 11: be sure you can run on Java 17 and on Java 21. nd if there is a Release burning that much like it was with Java 11 the Version before will get a really long Support time. That exactly is the difference. Being fucked up or not. The bigger point with Dotnet is: no security Updates. Not that there is nothing needed. Like you can see here

That’s what Microsoft says to Support roadmaps. That is the end of all security Updates. Following to that I just tested a Java release 6 from Azul (yes, it is still under full Support until 2024, sorry for that there are all bugfixes and so on available and even Security Updates, Technology released 2006). Runs without any problem. Your Dotnet 4.x will also in ten years be running. Without Security Updates but it will run. That is also the case with Java 4 released 2002 (21 years old) but not supported anymore (since two years no Support) but still running.

But that isn’t helping. That is technical Harakiri. You install and deploy a Software which is not under active maintenance. Okay possibly Xojo Users are used to. but. It is Standard to do exactly that not. My Customers would kill me for that and the regulatory offices also. Even in America that isn’t possible for military, transportation, medical Devices.

And since security is becoming more and more important I am asking my self about the security of a Dotnet 4 System which is long time not under Support. I know that many people doing that.But with Java there is no need to do that. And while they deleted old deprecations while classnames were needed logically for the replacing classes there was: yeaaahhhh you got it: a long time Support Version. That is not what you try to tell me you get from MS. From MS you do not get that kind of reliability.

The people complained about Java 11 breaking stuffs where people which could not get that there is exactly for that case Java 8 with a Support Time until 2030. That is for a Software Developer time enough to change the needed stuffs to come up to Java 17lts or even the new Kava 19/20 or the next 21lts. So I can not understand your argumentation about breaking Stuffs with Java 11 while everybody snowed: I can stand with my Software Version at least until 2030 on Market or I am rewriting the Classes where I have bugs to Java 11 and can then also compete for later Java Versions.

And that is even possible for really couplex programs like Freerouting. Was working on 7. On 8. On 11. And today I am maintaining just the Java 20 compatibility. So what? There is simply nothing like this with Dotnet. That is the point why I say that.

I’m not sure that the end of a support period means no security updates. I have seen MSFT do security updates on some pretty old tech. I think it is just an end to actively fixing bugs in general. But if even say .NET framework 3 is still installed and being used on millions of computers they can’t really evade fixing some zero-day exploit that becomes known.

MSFT sends old tech to die at MSFT India so it doesn’t get the love of the currently active releases but it isn’t totally neglected, either.

End of support is end of support. No bugs no sec. Maybe they do one. But I doubt that

Just researched at Microsoft support. Nope. No updates no security updates nothin planned, deprecated is deprecated. Nothin comparable to java. Ms does a cheap job

Hm, well if that’s the case then the takeaway is that you have about 3 years max before you have to move on, assuming you stick to the LTS release in odd-numbered years – otherwise you trust to luck, which in terms of security updates probably isn’t an issue for the back-end services I mostly write. I agree that is too restrictive, though.

Oh man. The nice part on lts releases is that they have long time support. And stick to that release is not needed. While I know what I will have to do if there is something to do even I can also do production with the newest release. But that is not needed while java 17 is good for Production and all needed technologies are running in actual versions. It is not like Ms dotnet. But I know you know better. It is a disease of this platform. I saw many Ms user coming and going. There is no maintenance and the only argument you have is you are stocked with java lts for three years. So what you have not even long term releases which are worth of this wording. Ms is not code reliable. Java is. And on top it is rock solid. Desktop with swing runs on all java versions. All swing apps I could deliver with java 17,19 and later also 21. Not like Ms. Where you wait for technology features java has since long time. So stick yourself with this rusty stuff not really running on MacOS and leave me my silence cause this discussions are not worth the time I am writing. I had three in the same market. All are dead today. Why? While they had to much stresses with cross platform and they had regulatory nightmares. I don’t want that. So I am not developing with technology from Ms. You can do it. But don’t try to press down a product which us not yours while you do not have that features and reliability. Work with your Toolchain but I don’t want to discuss in that form. It costs too many nerves. I am since long time on the market and I am paying my employees for the job they are doing. I have a bunch of customers and they all come back to me. Even a big one tried dotnet. We renovate his swing app now and he kicked the Ms Troup. Why? While the result was bad. So move on and that’s it.