Opinions: best IDE for module-based Java?

It’s been a couple years now since Java 9 introduced modules. How are IDE’s doing in terms of handling modules? Any thoughts on which is doing it best?

My experience is only with Eclipse. It’s made definite progress. I no longer avoid having a module-info file, and with that working, no longer need to put in a VM argument providing the JavaFX module path in the run configurations. Eclipse now provides meaningful error statements for helping keep the module-info file in order. I was just working with an old JavaFX tutorial (learning about creating a new control), and the IDE provided clear and easy-to-implement error messages on how to modify the module-info file. I was able to get the code up and running using OpenJDK 11 and JavaFX 14.

But I don’t know how well Eclipse works with creating jar files that can run module-based Java on other peoples systems, especially if JavaFX is involved. Use of JLINK to create a self-contained app seems the only way to make that work, or has something been figured out? And Eclipse doesn’t handle JLINKing yet, AFAIK. Do other IDEs?

1 Like

I’m still avoiding it, largely due to how awful Eclipse is, but to be honest it’s trying to make the best of a fucking terrible idea in the first place.

Cas :slight_smile:

I’ve also yet to hear any actual reason why anyone should use Java 9 / Jigsaw modules. And I am not talking about modularizing your application/system. That IS a good idea. I am talking about using the Jigsaw module system to do so.
So far, Jigsaw has created nothing but confusion about modulepath/classpath and what exactly is visible/effective in which circumstance and how to configure the module-info.java file appropriately.
We already have good and very mature mechanisms for modularization: think Maven artifacts. And if you want/need to take it further, by restricting visibility to individual packages, then there is OSGi, which has been used for ages now in the industry.
Jigsaw might be a good thing for modularizing the JDK itself, but then again you can argue: So what? You can build a shrunk-down JRE with jlink encompassing only what you need and weighing in at maybe 50 MB, compared to simply distributing a whole JRE with 150MB? Cutting down 100MB on the wire and on disk space is absolutely no argument for me anymore.

2 Likes

Another bummer is that us folks who’re dependent on Android SDK cannot go past Java 8. Gradle version is tied to the version of Android Gradle plugin, and it won’t launch on latest Gradle versions, and hence no support for Java 9+.

One more reason to stay on Java 8. Another reason is Kotlin. It allows to generate Java 7 bytecode with all modern language features, and just works out of the box. For modules, we have Gradle sub-projects as modules (equivalent of Maven artifacts) and works pretty decent.

1 Like

I got the original demo of Alien Flux down to - get this - under 5MB. Think about that for a moment.

1 Like

Not impressed, because who cares? Unless you have any figures showing that potential players are less likely to install a game that weighs in at 50MB compared to 5MB for the same game - given that people nowadays load tens of gigabytes… for a single game.

I think size still matters in mobile environments. I often see clients crying for an addition of ~1 MB to their app size. However, in desktop environments, there is no reason to consider this.

Yeah, but then: In mobile development you don’t need to ship a whole runtime environment as part of your game. The runtime is on the phone already.

I guess my initial point is also only valid in the context of games development. I totally see why people would in the context of function-as-a-service/serverless try to keep their deployments small.

It was more of a data point as to how small a VM can be. And also how the problem was totally solved 17 years ago.

Btw 17 years ago there was actually concrete data that showed that 5mb was the cutoff beyond which sales would start to plummet.

2 Likes

Sounds like the antipathy to modular Java is bigger than the question of how well different IDE’s handle it. I remain curious about how NetBeans and IntelliJ are coping, what features they have, and if done better than Eclipse. I’ve heard there are other IDE’s out there as well, but know next to nothing about them.

I saw that C++ has passed Java again on Tiobe. Articles covering this tend to emphasize positive aspects of C++, and not look at the rate at which Java is dropping. The latter seems a lot more significant to me in putting us second. I’m wondering to what extent these stats (unclear to me how they relate to actual usage) are related to people being discouraged by the modular aspects adding complexity. A selling point of Java over C++ was the ability to avoid headaches caused by the latter. That advantage is slipping away?

I suspect that the drop in popularity of Java has to do with speeding up the language and trying to put a bunch of new stuff in it, while taking out backwards compatibility for old stuff and also basically abandoning the rather easy IDE of Netbeans. It is a real shame too because the cross-platform capability of Java always appealed to me.

I just took a look at the NetBeans site. This recap of the history looks pretty healthy to me. The current version, 12.1 has just been released. Was there something about the IDE that was lost along the way?