8 ms·
Why Java is still relevant
- eranation 13y agoThis is one of my first posts, and English is not my native language, so comments not just on the content but also on the language are more than welcome.
- danso 13y agoSpeaking for myself in the U.S., the need to learn a new language other than English has become such an edge case that I always marvel when non-native English speakers put their work out for us to judge. Your writing is clear...more importantly, you have a great grasp of how to visually partition your essay, a skill that many writers, native English or not, could improve on. Great submission, even if I'd like Java to be less prominent :)
- eranation 13y agoThanks! :-)
- dwyer 13y agoIn that case, "Why it saves you time?" should be "How does it save you time?" That was the only line in the piece that screamed "non-native English speaker" to me.
- eranation 13y agoMuch appreciated, thanks!
- cpeterso 13y agoI was impressed by your clear writing. Some minor suggestions since you asked for feedback: <:) * "mandatory requirement" is redundant. If something's not mandatory, then it's not a requirement! :) * "Many admit that as much as Java is not much fun to write code with, the JVM is a different story.": This sentence is awkward. Perhaps something like: "Many admit Java code is not much fun to write, but the JVM doesn't limit your choice of language." * "Scala shares the Java Technology Stack, and knowing Java is a big plus when learning Scala, especially due to the common library ecosystem, and the insights into the JVM workings.": This sentence is awkward. It could be simplified into something like: "Knowing Java is a big plus when learning Scala because the languages share a common library ecosystem." If you are interested in more resources about English writing, I recommend Joseph M. Williams' Style: Toward Clarity and Grace. Strunk & White's Elements of Style is a classic (and short), but some people dislike it.
- eranation 13y agoGreat feedback, I will certainly look up these books, thanks!
- cpeterso 13y agobtw, Elements of Style is a very short book (~26 pages) and early editions are available online: https://courses.washington.edu/b572/public/StrunkWhite.pdf https://courses.washington.edu/b572/public/StrunkWhite.pdf
- twic 13y agoIt's also not very good: http://chronicle.com/article/50-Years-of-Stupid-Grammar/25497 http://chronicle.com/article/50-Years-of-Stupid-Grammar/2549...
- deleted 13y ago[deleted]
- suyash 13y agoJava runs the world and runs on several devices from Raspberry Pi, embedded robots (java me) to Mobile Devices (Android) to Enterprise Software (Java EE) to Data Servers crunching Big Data (Hadoop).
- syberslidder 13y agoJava is still relevant because of how much code is written in Java.
- marcosdumay 13y agoJust like Cobol? As expected, the article was that, a "Java is fast" that can only be said if you don't compare it with anything made to be fast, and "Android uses Java". All the other reasons are excuses for drawbacks of the language. The one thing that made Java relevant - that one can create a ruleset that constrain bad coders and avoid them destroying all your codebase - didn't go away. And the context where companies just don't know how to hire developers didn't change either, thus still only projects that protect themselves against bad developers are ever successful within them. But it seems that the more productive languages are so much more advanced than Java nowadays that it become better to protect a project by hiring less developers than by making them less powerfull... Or, at least, I can think of no other reason for people to care to anounce that Java is not dead yet.
- bitwize 13y agoJava will wane in relevance as Oracle turns it into a way to squeeze support contracts out of users (see the recent timezone-update kerfuffle).
- calpaterson 13y agoActually, Oracle have proved a LOT more committed than Sun to improving the language. They put one of the smartest guys in charge of Java 8, charged him with turning the ship around and have given him a lot of resources to work on it. Even Java 7, while including few language features, did include a lot of JVM improvements. The timezone-update tool, on the other hand, really is a minor issue. So some people will have to use IBM's tool instead. Yeah, it's lame, but I don't think it's going to change anyone's mind.
- parasubvert 13y agoDid you not notice that Oracle is still providing free TZ updates through regular JRE updates? TZ updates aren't going to have much of an impact on Java relevance. If they start charging for JRE updates themselves, let's talk.
- vinceguidry 13y agoWhy learn Java? Sure, there's lots of jobs out there for it, but there's also lots of Rails jobs too. Rails is more fun than Java, so if you're looking to expand your career opportunities, you're probably better off learning a tech stack that won't bore you to death.
- cromwellian 13y agoThings are boring when you already know them. Things are interesting when you're learning something new. Most of the excitement over other languages comes down to the fact that you are starting from scratch and everything is fresh.
- gohrt 13y agoAs someone who coded both Java and Javascript today, I attest that boring is also when every little darn thing takes 10x the amount of time and code as it rightfully ought to.
- cromwellian 13y agoBoring is also spending a few hours tracking down a typo in a large Javascript app. Or trying to refactor something and grepping through a bunch of files trying to find the ways in which it's being used. There are downsides and upsides to both kinds of development.
- free652 13y agoReally? I guess you spend too much time coding than solving a problem. Java / Python / C# / Go... All the same.. I spend more time solving a problem than actually coding. Once I have a solution rewriting in an another language is a piece of cake.
- ishbits 13y agoRight. I think Java does suffer from a little too much boilerplate, but that is solved by becoming proficient in an IDE which doesn't actually take too long. Even for this old hacker who only picked up an IDE 2 years ago after nearly 20 years of emacs.
- nemothekid 13y agoAlso a lot of the de-facto Big Data/NoSQL/Distributed Computing stack is Java(/Scala). Hadoop, HBase, Cassandra, Neo4j, Storm, its actually pretty interesting to note that most of the popular nosql solutions are in Java. On top of that its the number 3 language on Github. I'm not a huge fan of Java but I'd be pretty surprised if someone was saying Java wasn't relevant. Don't quote me on this, but its also the fastest language you are going to get without pulling out C/C++. When the author made the claim that Java was as fast as Go, I was a bit surprised. I wasn't aware Go had caught up to Java.
- octo_t 13y agoJVM crypto (i.e. using encryption libraries) can be faster than native because of function inlining (whereas in C/C++ you don't inline across libraries at link time because an update to the crypto library would require a recompile).
- jimmaswell 13y agoJava and Mono have been shown to be roughly comparable overall in speed, each a bit worse or better than the other in some ways, I've read.
- headius 13y agoShown where? Mono's JIT is nowhere near as good as OpenJDK/Hotspot.
- jimmaswell 13y agohttp://stackoverflow.com/a/9138207 http://stackoverflow.com/a/9138207 I think this is the answer I was thinking about.
- sjg007 13y agoIt's also because of automatic garbage collection and the fact that programmers today can't handle memory management.
- BadassFractal 13y agoJava and the JVM seem like fantastic foundations to have for a language like Clojure. You can develop in a fun language and still use the immense amount of libraries that have been created over the years by the community. You can interop with pretty much anything, and you didn't have to make it yourself or wait for your language to catch up to it, because it's been there all along thanks to Java. Don't look at Java like the starting point, look at it as the big furnace for what's leveraging it.
- jlgreco 13y agoI have always found it rather unfortunate that the JVM is the best platform for Clojure, and unfortunate that interop with Java is so important. All of the blemishes on the language seem to be a consequence of those two things.
- BadassFractal 13y agoI think the idea is to have Clojure support as many runtimes as possible, or whichever runtime is best for the task. The JVM was the start and at this point has the biggest momentum, but there's not much stopping people from porting the language to a different runtime.
- peatmoss 13y agoI really truly love Clojure the language. To me the vector, map, etc syntax is a perfect amount of syntactic sugar--it institutionalizes idiomatic use of these structures. But... sometimes the JVM feels awfully heavy-weight and far from the metal. I have to wonder what a Clojure on SBCL or Racket would look like. Ignoring for a moment the benefits of the epic number of JVM libraries, I can't help but think that the foundations of those languages would be a pretty low impedance mismatch for Clojure The Language. Hey, Clojure-on-CL or Clojure-on-Racket could even support real tail recursion.
- jlgreco 13y agoCould that mean that Clojure might one day support TCO/mutual recursion as F# does, if being used on the CLR? I know it is cliche to complain about that, but it really does annoy me. A Clojure targeting LLVM could be pretty interesting too...
- quchen 13y agoEvery time articles about a language "still being relevant" pop up, my first thought is "oh, it's down to that stage already". Not sure what this article is trying to accomplish.
- polyfractal 13y agoLucene (and projects built on Lucene like Elasticsearch and Solr) make Java relevant, even ignoring everything else built in Java.
- jebblue 13y agoI like Java, really. Learning it might be a good idea as the article suggests, you might find you like it too. It's solid, fast, tons of libraries, it's efficient for programming IMO.
- jebblue 13y ago>> Stream.of(1, 2, 3, 4, 5, 6, 7) .map(x -> x * x).filter(x -> x % 2 == 0) .reduce(0, (sum, x) -> sum + x); If I catch anyone writing Java code that I will have to work on writing Lambda expression crap like the above I will hit the ceiling. How can you debug junk like that?
- jimmaswell 13y agoI write code like that with LINQ and such in .NET all the time and have no problem debugging it.
- UberMouse 13y agoIs there actually a way to properly debug LINQ expressions? I haven't figured out how to get Visual Studio to step through lambdas or break halfway through the chain (eg break after the filter call has completed and before reduce runs in the above example). But I'm not sure if I'm missing some blindingly obvious.
- jimmaswell 13y agoI don't know, but it just hasn't been a problem. If something's that wrong with the expression chain I can just break it up temporarily.
- jebblue 13y agoThing is though, now you've changed the recipe from what you intend to run in PROD. You linearized it to gain a debugging advantage that you lose when you re-lambdaize it.
- walljm 13y agothis probably isn't the place to start a chain on how to do this, but if you wrap the statement in the lambda in a {} block and explicitly return the expected value, you can insert line breaks and set breakpoints. i'm not familiar enough with the vocabulary to explain it perfectly, but i do it all the time. example: list.Find(o=> { if (o.prop == "foo") { return true;} // visual studio will allow a breakpoint here else { return false;} });
- matdrewin 13y agoAmen. I'm a bit tired of people just dismissing Java based on its hipness factor.
- marssaxman 13y agoI dismissed Java a lot more back when it was hip. Now that it is not hip, it is no longer necessary to dismiss Java, since I can simply ignore it.
- zaphar 13y agoI like java as a language. It's consistent, has less warts than many languages and the jvm is pretty darn awesome. What I don't like is the java ecosystem. Guice? I've nothing but bad experiences with it. Just about every framework out there that I've used in java has gotten in my way more frequently than it's been helpful. Java Api's (excluding much of the stdlib) almost all seem to be made to annoy me. Java's great. If only it's ecosystem matched.
- twic 13y agoI work on a large application that uses Guice, and it doesn't seem so bad, so YMMV. Mind you, this may just be because there are other things in the application that are so much worse.
- bliker 13y agoI would be curious what PG thinks about this. Relating in opinions described in his book. And is it just me or "banking startup" sounds like oxymoron. Anyway, thanks for sharing your opinion. Still think learning GO could be a better idea, at least for me.
- Zigurd 13y agoA great irony about the use of Java as a language for interactive systems is that it only took off when deeply enmeshing a Java-ish runtime with Android freed Java from the constraints of "write once run anywhere." It turns out that OSs have diverse interactive frameworks with different capabilities, and OSs compete on the basis of those differences. In Android, this divergence from other OSs includes the ability to install aftermarket middleware in Android's userland.
- depsypher 13y agoI've given up any hope of Java ever being considered a sexy language. Its philosophy has been the polar opposite of 'move fast and break things' at least in terms of how the language has evolved. That's been mostly a good thing, though frustrating. The language features are catching up now with the 'sexy' languages and it's pretty exciting. Still one of the biggest problems with Java I think is the plethora of options you have when building a web stack. And integrating everything is a huge pain. There are options like dropwizard or play, but those bake in too much of their own assumptions for my taste. If anyone is interested in seeing what a modern Java web stack looks like, check out my attempt at it here: https://github.com/depsypher/flapjack https://github.com/depsypher/flapjack
- taylodl 13y agoJava is the new COBOL. Everyone is going to be wondering when Java will die for the next thirty years. Java will still be running the enterprise decades after RoR is gone. The more interesting question is which will die first: Java or COBOL?
- GnwbZHiU 13y agoOf course, who says it is not? Java sucks allright, but is still a big player in the industry.