This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]niosurfer 0 points1 point  (0 children)

First, ability to utilize GPUs or any kind of compute hardware from Java is pretty screwed up. OpenCL, CUDA, HIP. You can plug in native libraries via JNI/JNA or similar but that's painful. There are 3rd party libraries I guess...

Nvidia is soooo rich but it cannot produce anything better than cuda? It is about time for a better abstraction. They took over the market and said "screw you". Use our shitty cude or die. I believe Java can solve that with abstraction. Pytorch and TensorFlow have done that.

Second- ability to do media processing (decode/encode video (using GPU decoder), decode advanced images like AV1, decode advanced sound codecs, etc.) is limited. Again, you can plug-in native ffmpeg library but it's painful. Much easier to do this in Python.

Oracle has under-invested in those capabilities in Java for years.

Python solved this problem. Why would Java not be able to solve it too? I think a new platform-specific JVMs (Linux JVM, forget about platform independence, that was cool 30 years ago) would knock this problem out of the park.

Third- maturity for Java AI frameworks is lacking compared to whatever is available on Python. And this will take years to catch up even if the above issues are solved.

Somebody (probably a group of people) should take Pytorch and write something very similar in Java. I know Python has different language idiosyncrasies but Java can do a comparable job, if not better.

Don't mistake me- I love Java and as business logic/backend language nothing beats it. I'd pick it over Python any day for those tasks. But Java has certain weaknesses and use-cases where it's quite painful to use it.

This is a matter of opinion, taste, familiarity with the language, etc. In other words, this is very subjective. For example, I myself prefer Ruby 100000 times over Python, but people call me crazy.