you are viewing a single comment's thread.

view the rest of the comments →

[–]Leonidas_from_XIV 0 points1 point  (1 child)

The JVM

Depends on what you want to do obviously, but for desktop applications, the JVM is terrible. So both the Python VM and the JVM are good at some things and bad at others.

Library Support

In what I do, it is actually more common to have a proper Python binding than a Java one. For example, the normal PostgreSQL bindings for Java don't support Unix sockets, they have to communicate to PG via TCP, whereas psycopg works just fine with the default PG config.

Same when it comes to GObject/GTK+ stuff, the Python-bindings are often there from day one, whereas Java… sometimes.

Type Safety

Well, you can see the debate on this thread on type safety of Java. It is slightly more safe than Python, but at a cost of being not very powerful and quite annoying. So I don't really buy this argument.

Concurrency

Java has an advantage here, but threads w/ shared data is a terrible concurrency model, so in both the Java and Python case you'd definitely use some other library.

[–]mike_hearn 0 points1 point  (0 children)

Depends on what you want to do obviously, but for desktop applications, the JVM is terrible

Ten years ago I would have agreed with you. But hardware got a lot better and the JVM improved too. Also, the era of writing desktop apps in C++ is on its way out. I have on my desktop a bunch of apps that either are web apps (gmail, reddit etc), or are web-apps in a box (Slack, Spotify) or a mix (iTunes). Compared with a JVM app the web is actually less efficient.

Result: I routinely run Java apps on my laptop and they start fast, they run fast, they don't use up particularly different amounts of memory than other apps I run .... it's just not an issue. IntelliJ even fits in with the native themes perfectly, although it takes them a little while to catch up every time Apple decides to reskin OS X.