The Future of Java SE [video]
youtube.com
youtube.com
If you go to the page an select builds from the drop down half of them weren't available last I checked. They're new so I'd give them some space for maturation.
The first 30 minutes is about the new release cycle, which is... hm.. quite dry, boring and covered extensively elsewhere.
Add GraalVM native image capability to that, and Java will be back to leading the pack again.
I loved working with Java/Spring at one time, but there are too many good alternatives and I choose to vote with my feet.
Large software companies (except MS) are far more often the target of patent infringement lawsuits/threats than the perpetrator.
[1]: https://www.forbes.com/sites/ewanspence/2015/11/01/microsoft...
[2]: https://www.howtogeek.com/183766/why-microsoft-makes-5-to-15...
[1]: https://en.wikipedia.org/wiki/Oracle_America,_Inc._v._Google....
You can argue all you want how I would be or I wouldn’t be, or that I would be fine as long as I didn’t call it Java, but as long as oracle remains super-litigatious...
I would rather put my efforts elsewhere.
(Would love to do or learn more about Graal, too, but... yuck. What am I going to get sued for if I re-implement any of it? No thanks.)
[1]: https://video.oracle.com/detail/videos/featured-videos/video...
OpenJDK has been around for years.
There's also Kotlin.
After that you have to further download a pre-compiled JVM to bootstrap the compilation, and install further debian packages such as X11 stuff (???). I looked at the Debian package's Makefile from the package maintainers, and then I gave up.
The complexity, and especially the dependencies, of the JVM are outstanding. I guess some work groups are paid to work on Java, but it seems some sub-projects are staling, while some modern expected features are still not in the JVM. For example, it's difficult to see where GraalVM is in the grand scheme. Is it replacing several previous project? Is it competing with ongoing sub-projects? Will it be compatible with most projects?
The problem I see with Java is : if people are not paid to work or develop it, I'm not sure people would continue to support the language and the stack, given the time and specific skills you have to invest in it.
At that point, Java looks more like a research project than a production-ready tool.
Java need a previous version of java to bootstrap because javac is written in Java. And you don't need x11 if you build the headless version.
For Graal, the goal is to replace c1 and c2 (the two JITs used by Hotspot and written in C) by Graal in order to have only one JIT written in Java. But Graal is competing with c2 which has tuned over two decades, so currently you can choose if you want to use c1/c2 or c1/Graal when running Java. We know that Twitter is running Graal in production, i've no more info on that.
I would like to be able to hack on Java like I can on any of those above languages, but "JVM" is actually a too big of a project containing way more than the necessary, which is, I guess, a legacy from the business model and organization of Oracle. Today, there are ant, maven, Gradle, mercurial, JVM, 2 GCs, JRE, JDK, headless versions, tons of codenamed other projects, a giant README and a lot of documents to read.
If "Java" was just a single _lean_ compiler and standard libraries, easy clone; configure; make, like Go or Rust are, it would be more approachable for new people, it would give a better first impression.
That being said, I'm impressed by the academic work of people working on the GCs and the JIT technologies of Java and JVM.
Edit : Maybe other compilers were lighter because I cloned with --depth 1 on git. I don't know the equivalent on mercurial, so it downloaded more than necessary
I don't know why that would happen - that's a shame. They're moving to GitHub soon though.
> Total size of the source code with sub-projects dependencies : 1.5 GB.
Is that a problem? How large are most other large, long-lived projects' repositories? Linux is also several GB, for comparison.
> After that you have to further download a pre-compiled JVM to bootstrap the compilation
Yes it's bootstrapped. Just like most other programming languages. Is this a problem?
> and install further debian packages such as X11 stuff (???).
Java includes windowing libraries. Is this a big problem?
> I looked at the Debian package's Makefile from the package maintainers
What were you looking for in there? You can just build Java without trying to build Debian packages.
> The complexity, and especially the dependencies, of the JVM are outstanding.
I really don't think this is the case compared to any other large systems project. What was the real problem you found? It needs a binary to bootstrap it? Yeah like almost all languages. It's a bit large? It's been around for decades. It provides windowing libraries? Wow what a crime.
> I guess some work groups are paid to work on Java
Hundreds. Hundreds of people are paid to work on Java full time, at many companies. I would guess probably more people work on Java implementation than any other programming language.
> if people are not paid to work or develop it...
Let me stop you there, because they are.
> At that point, Java looks more like a research project than a production-ready tool.
It demonstrably is production-ready. Massive companies use Java in production in enormous, complex, demanding deployments, and have been for decades.
> It demonstrably is production-ready. Massive companies use Java in production in enormous, complex, demanding deployments, and have been for decades.
It's true, it powers a good part of the Android ecosystem, and probably a lot of stuff we use everyday, but Google has massive ressources!
Given the momentum of Java, and with the rise of GPGU, Tensor DSPs, accelerated hardwares, containers stuff, Kubernetes or maybe even new programming paradigm around AI, will Java be able to keep up and find its way? What about Scala, Clojure, etc
This is only my point of view, but C and C++ still look more future proof for speed, and everything else in Python or Go is good enough. I understand many investments were made by many companies on the JVM and at least one of its language tho
This doesn't happen often.
It's definitely not a research project. There are many large companies who contribute to OpenJDK, for example Oracle, SAP, Red Hat, SAP, Google and Amazon
https://blogs.oracle.com/java-platform-group/building-jdk-11...
Oracle contributes patches to OpenJDK, for instance lambda support.
Do you want less of that? Are the commits made by Oracle employees especially bad?
It's not like you need to use the Oracle JDK. There are many different distros, just like Linux.
As long as the current code works, you can add new features and fixes to it, there is no reason to change. For new projects you should use teh best tool for the job.
More seriously, I'm curious where you work or what parts of the industry you're privy to. It's everywhere from where I'm standing. Tons of companies are built on millions of jvms. LinkedIn, Google, Twitter, Amazon, etc. I know personally but I'm sure every third other tech company in the valley at least too.
[0]: https://rationalwiki.org/wiki/Fallacy_fallacy [1]: https://en.m.wikipedia.org/wiki/Argument_from_fallacy
Just to remind you, there was an entire industry built around Flash and Silverlight too. The people responding to me seem to think I'm advocating a quick rewrite (whatever that means), but all I'm saying is that from where I stand Java will not last in the long term without serious changes within Oracle. It would be better to have a transition plan now than no transition plan on a dying platform.
I was sort of expecting to be flamed, but I can assure you I'm not interested in revealing to flamers where I work...
Java is still free, so it can't be that.
What do you think will happen? Do you think that a sane boss will approve you wasting resources to port it to cool tech X instead of fixing the current needs. The only projects that have no choice and must do a porting are Flash based projects because soon will be probably impossible to get regular users to have Flash in a browser.
All I am saying is that good management is to look at the risks of sticking with Java and find a migration path earlier, because the longer you wait the more expensive it becomes to move away. And one day you will find you have no choice, and then it will be very expensive.
It is possible to maintain and even add essential features to a legacy system whilst migrating to a new system. Happens all the time.
First of all you have OpenJDK that is part of Debian, everyone knows that Debian is very strict about licensing so if it is part of Debian there will be nothing that will make Java retroactively unusable without a paid license.
I am not sure what your work experience is but I worked in small companies that use boring old tech, maybe it would be cool to use some cool language or cool framework but then you still get left behind when the language has a new incompatible version or the frameworks have a new version, the purpose is to keep the project working for the users, we not fix what is not broken.
Add to this that Spring is becoming a sprawling behemoth with massively outdated tutorials lurking in the top results of Google. At this point I wanted something that was easy, GC'ed, with good tooling. That's Go. DLang looked promising, but it's not easy. It also suffers from the out-of-date tutorials and books issue (my D book still says I have to pick between Pheobos and Tango collections). C++ seemed like overkill. Go provides a simple binary with a simple runtime with a simple RAM pattern.
I do like Java. I know it well. I'm literally typing this with a Java Ring on (https://www.ebay.com/itm/JAVA-RING-RARE-Sun-Microsystems-JAV...). Sadly, the JVM at this point doesn't fit my needs. Go is pretty terrible in some of aspects, errors and the way the community decides to carve files up, and the annoying way functions on structures float freely within a file, but I couldn't find another language that compiled to a binary, was simple, and had good library support for threading (so OCAMLs out)and RabbitMQ.
If you don't already know Rust I'd never recommend it for a project from a "your requirements meet its strengths" perspective. Python or Go you can pick up as you go pretty easily. Even Java can annoying if you're new just getting set up with Maven and Intellij.
Rust is on my "Things I'm Excited to Sit Down and Learn" list but it's not something you'd pick up in 2 days. Learning Rust is a project unto itself.