Why Java is still relevant
medium.com
medium.com
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.
It's because of integrated circuits and the fact that programmers today can't handle voltage management.
As a Go "fan": it hasn't. It's close in some things, faster in a few, but the JVM has years (and years) of performance tuning in it, and Go won't unequivocally beat Java for some time (if ever).
(This WiFi connection is failing me right now, but there's a good number of Go vs. Java benchmarks out there, for whatever benchmarks are worth)
Out of the 10 tests that have both Java and Go results, Java is faster than Go in 9 tests while Go is faster than Java in 1 test (by 0.2%, so not significant).
Hence I said that out of the 10 tests that contain both Go and Java results Go only beats Java (by a statistically insignificant 0.2%) in 1 test while Java beats Go in the other 9 tests.
* "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.
http://chronicle.com/article/50-Years-of-Stupid-Grammar/2549...
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.
Mind you, this may just be because there are other things in the application that are so much worse.
Don't look at Java like the starting point, look at it as the big furnace for what's leveraging it.
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.
I know it is cliche to complain about that, but it really does annoy me.
A Clojure targeting LLVM could be pretty interesting too...
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
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.
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.
I'm a bit tired of people just dismissing Java based on its hipness factor.
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.
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.
Far far less than Java jobs.
>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.
Rails and CRUD web apps bore most hackers to tears.
At least with Java you can work from web apps, to Android, to web services, create powerful servers like Cassandra or powerful stuff like Solr and Lucene, use embedded Java, and a lot more.
Especially in middle America, or corporate America.
And far far far far less than .NET jobs. Which is still more fun than Java.
> Rails and CRUD web apps bore most hackers to tears.
They don't bore me to tears. Between the brand new Javascript frameworks like Angular and CSS frameworks like Bootstrap, it's possible to develop great looking, simple apps that have a great deal of functionality in extremely short amounts of time.
Depends where you are. Outside Silicon Valley and a handful of tech hubs in the world, Rails pretty much doesn't exist. Java, on the other hand, is used everywhere.
Anyway, thanks for sharing your opinion. Still think learning GO could be a better idea, at least for me.
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.
The more interesting question is which will die first: Java or 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.
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?
But I'm not sure if I'm missing some blindingly obvious.
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;} });
The language is fine but the insistence by the vast majority of the developers using it to do things in a way that can only be described as "Enterprisey" gives it a bad name. And it really is a shame.
int sum = 0; for (Integer x: Arrays.asList(1, 2, 3, 4, 5, 6, 7)) { int x2 = x * x; if (x2 % 2 == 0) sum += x2; }
No threads, no weirdness. It's just a different syntax for a loop, really.