7 ms·
Any talk of Java "dying" is just nonsensical Java hands down is the most obvious choice for any applications that require performance, yet are too complicated
by dmk23 13y ago
Any talk of Java "dying" is just nonsensical
Java hands down is the most obvious choice for any applications that require performance, yet are too complicated to write and support in C/C++/other lower level languages. Java JIT is very mature unlike JITs for most other languages, which largely remain at the level of experimental projects and fall short on key production requirements.
Given that the entire Hadoop ecosystem is based upon Java as well, it is here to stay for anything that has to deal with "Big Data"
- anologwintermut 13y agoIsn't the most obvious choice for things that require performance but are too complicated to write in C, C++? Isn't Java the choice for things that aren't performance critical but are too complicated to write in C? Java survives because thats actually most things.
- fleitz 13y agoYes, that's why kernels are written in java. If you're writing complex code java is rarely the answer as it requires so much complexity itself. Hint: Most java projects just appear to be complex because of the poor quality of the language (and developers). Java is hands down the choice for simple projects written by way too many poor quality developers. The JVM can barely manage 12 GB of memory, Java is a piece of crap when it comes to anything that's actually complex.
- bradhe 13y agoThis comment is laughable at best. Ignorant might be a better word for it.
- fleitz 13y agoCare to elaborate? Here's the 12 GB of memory... http://www.datastax.com/docs/1.0/operations/tuning http://www.datastax.com/docs/1.0/operations/tuning As far as the language is concerned... What problem of high performance & complexity apps does Java 7 solve that C++11 doesn't?
- jfoutz 13y agoIt solves the problem of using mediocre developers to get code into production. Clunky, slow and overly complicated is infinitely better than a segfault.
- sillysaurus2 13y agoAutomatic memory management...? "Just use Boost" is not a viable strategy when it adds so much complexity in and of itself. I'm not defending Java, but it's helpful to know what the limits of each tool are.
- eropple 13y agoAutomatic memory management (especially with a garbage collector) is antithetical to high performance. I like the JVM (for Scala, mostly; Java-the-language can go screw), but there is nothing there really remotely close to C++ and C, and the garbage collector is a very large part of why.. Rust might horn in on C++'s bailiwick, but until then, it's gonna be a while. I strongly disagree that Boost really adds "so much complexity"--and, by the way, shared_ptr and friends are in C++11, and by extension within the standard library. So you don't even need this, unless your goal is to target extremely old platforms. But honestly, if you seriously need shared_ptr, your code design is probably just Not Very Good.
- sillysaurus2 13y agoAutomatic memory management (especially with a garbage collector) is antithetical to high performance. The LMAX Disruptor pattern would like to have a word with you. http://lmax-exchange.github.io/disruptor/ http://lmax-exchange.github.io/disruptor/ http://martinfowler.com/articles/lmax.html http://martinfowler.com/articles/lmax.html http://stackoverflow.com/questions/6559308/how-does-lmaxs-disruptor-pattern-work http://stackoverflow.com/questions/6559308/how-does-lmaxs-di... I'm not just namechecking the Disruptor pattern. I have extensive experience with it. It's about 10% slower than what could be achieved with C -- which is to say, the benefits of not having to program in C far outweigh the 10% loss of performance. And its performance is almost always far higher than what's needed, i.e. the bottlenecks are elsewhere. I strongly disagree that Boost really adds "so much complexity" We'll have to agree to disagree, I think. Importing Boost is often a sign that something is awry with the design goals of the project. Either the choice of language is wrong, or the project is too ambitious. Though there are some aspects of Boost that are pretty good, such as its unit testing framework. if you seriously need shared_ptr, your code design is probably just Not Very Good. This I fully agree with.
- millerm 13y agoI would venture to say, with no facts or figures mind you, that if you were to evaluate the number of lines of code dedicated to kernel programming to that of applications running applications on the Internet, that the resultant figure would be so small for kernel code that it would look like kernel development doesn't even exist. Saying that developers who use Java are poor quality is also an awful thing to say. Yes, there are many "poor" Java developers. But, it's only because there are so many Java developers in the first place. So, of course when you take even a small percentage of such a large number there will still be a large enough sample to look significant. It's the same for all other languages. Java has been my primary language for the last 14 years. During that time I have worked with countless individuals who I would regard as some of the smartest and most competent programmers (who develop using Java) I have known or heard of. These people make your banks, file sharing sites, massive online market places, electronic billing etc. work. So, go ahead and bash all the developers from Google, Sun, SpringSource, Apache Contributors, Oracle and the other 10,000+ companies out there, but empirical evidence has shown that the language and platform work. Your statement is just so "trollish"... seriously? Edit: capitalized Internet. Letting the run-on sentences and bad grammar fly.
- fleitz 13y agoWhat about java makes it better for high performance / complexity code? I never said there isn't a lot of java code, or that it doesn't work, my assertion is that java is not the hands down choice for high complexity / performance work. If you've got a bunch of mediocre programmers who can't be trusted to make + add things together then sure java is a great choice.
- bdamm 13y agoIt's a natural fit for enterprise programming where time to implement is usually key and logic is endlessly extended to accommodate whatever new business requirements emerge after the last round was deployed. And robustness is valued more highly than raw performance. Use Java - pay for twice the servers and get ten times the uptime? Done. That means that days or weeks spent hunting your latest memory corruption issue makes C a non-option for these applications. As for mediocre programmers - sure, and a large bunch of mediocre programmers scales, whereas a small team of star programmers doesn't. Someone has to tweak the UI. Someone has to implement all that tedious persistence logic. You need star programmers for that? No. I'm excited to see if Go intrudes on this field, but it's a big field and Go's just starting out.
- EdwardDiego 13y ago> Java is a piece of crap when it comes to anything that's actually complex. Define complex?
- neeleshs 13y agoOh please, Workday uses a JVM managing 160GB. Lucene/Solr are not simple projects, by any yardstick, for example. I do agree Java the language is somewhat cumbersome, but saying that its a piece of crap for anything thats complex is naive
- deleted 13y ago[deleted]
- pron 13y agoYou seriously don't know what you're talking about. Virtually all serious software that uses complex concurrent data structures is written in Java nowadays, because the JDK is pretty much the only runtime that supports state-of-the-art, envelope-pushing, concurrency. Here's my previous discussion with haberman on the subject: https://news.ycombinator.com/item?id=6505853 https://news.ycombinator.com/item?id=6505853
- codygman 13y agohttp://learnyousomeerlang.com/ http://learnyousomeerlang.com/
- pron 13y agoErlang is awesome, but only offers high-level concurrency constructs (actually, just a couple), it does not support low level ones (CAS). You can't write, say, a good concurrent hash-map in Erlang. Or in Haskell, for that matter.
- codygman 13y agoUnless I'm mistaken, this library provides CAS for haskell: http://hackage.haskell.org/package/bits-atomic http://hackage.haskell.org/package/bits-atomic Though if you were only affirming that it isn't a language construct you are correct.
- Zigurd 13y agoI'd like to see any language withstand the combination of big project, lots of managers, mixed levels of experience and expertise on the team, and over-reliance on structure and methodology versus having the right people. It just happens that Java gets picked for those kinds of projects.
- dinkumthinkum 13y agoOh come on. To say it is the "obvious" choice is heavy editorializing. I agree it's not going anywhere. As others have pointed out there is a fine language called C++. In point of fact Java is not the obvious choice, that's bit much. There are some very good arguments of Java that may or may not be deal breakers but are still issues ... There must be a middle ground from the power of C that is not OOP gone awry. :)
- wheaties 13y agoLike Erlang's GC what all with the 5 9's of uptime it was designed to handle. I mean, come on, the GC algorithm it uses may be battle tested and far simpler than the GC beast that is the JVM but simple is bad, right?