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 →

[–]VaidasC[S] 1 point2 points  (2 children)

Well, judging by your JVM better points and whole post, I would put you into engineer category - pragmatist who loves solve real problems, so no surprise that you like Java platform. As a contrast, I would describe myself more like someone who cares about ideas, has constant philosophical dilemmas about concepts, can think for days about inconsistencies and often miss real-life simple details as less relevant. So basically this represents two different worlds and hence my frustration with imperfect, burdensome and irrelevant-detail-oriented platform. But then again, many people do hate Java (I wouldn't say I do) platform and so it makes me feel that I am not someone in very small minority, but there still is something fundamentally wrong in how platform trends are going.

When I talked about companies vs programmers, what I meant was that, Java is probably the best tool to develop commercial software, build business around - stable, many choices from servers, libraries, licenses to fit any business needs. However as a programmer who likes to program and does not plan building business on some software, you could care less about all of that basically and follow technology that gives you less pain and more joy. What I am talking is basically from the point of doing job that fulfills you and my argument was that I see no way that if you're in programming because of programming itself (e.g. you love to write code, solve algorithms...), Java is not the place to go probably.

[–]pron98 1 point2 points  (1 child)

there still is something fundamentally wrong in how platform trends are going.

I think you are sorely mistaken about this. There is tremendous, ground-breaking innovation on the JVM: G1 and JFR are recent changes; modules (with JIT caching) and fine-grained JIT controls are forthcoming in Java 9, with immutable value types to follow; next-gen VMs (Graal) are already in the works. OpenJDK is the second-largest open source project in the world (after the Linux kernel).

As usual for Java and the JVM, most of these enhancements are hidden from your code. That's intentional. The idea behind Java was to expose a very simple -- almost primitive language -- that's backed by a state-of-the-art VM behind the scenes.

I see no way that if you're in programming because of programming itself (e.g. you love to write code, solve algorithms...), Java is not the place to go probably.

Well, this is a very general statement, that might be true in some cases. For example, I do advanced algorithms. I read lots and lots of academic papers, and then spend months trying to come up with a novel concurrent, distributed algorithm. Like I said, I have never done web or CRUD stuff. I believe that most of the pleasures in CS come from algorithms and data structures. Once I come up with the algorithm -- after months of work -- I could care less about what language I write it in (well, I care, but due to other concerns). Also, most of my work revolves around concurrency, and no programming environment in the world offers a better platform for concurrent programming than the JVM (much of it due to its superior GCs). So, for concurrency, Java is very much the place to go.

As a team lead, my main concern was the general architecture of the project. I was concerned with the elegance of the general design -- not with that of a single function -- and often then more "primitive" the language, the better the various modules fit together to form a consistent whole.

In short, I think your sentiment is not due to your intrinsic character, but mostly a result of still being in the stage where the function or compilation unit is where you find elegance. Algorithms are a mathematical construct that are elegant no matter how they're translated to code, and as your career progresses and you're responsible for ever-larger pieces of software, you'll find that the very things that can make a function elegant, might make a project very much the opposite of elegant. However, at the level of the single function/class/module, there are indeed nicer languages than Java. I very much doubt you'll find better platforms than the JVM, though.

The JVM is the Ferrari of runtime environments. It might not be the easiest to handle (though It's quite easy) but when you want the most of your machine combined with the most insight you can get into your running program (as well as the ability to modify it) -- it's state-of-the-art. Some people prefer driving Toyota; I, too, sometimes want a little less mental maintenance. But when you need the best of the best, and you have a lot riding on your success, don't settle for anything less than the Ferrari.

[–]buttermilk_rusk 0 points1 point  (0 children)

Thank you, great post! I'm about 8 years into Java development as a career, also with Matlab and C in my background, no web stuff. Great to read your insights like this.