Java is horrible and I hate it. Good, now there's a strong intro: attention grabbing, and it gets the natives all riled up. Sadly, the extremist sentiment of my statement is not that far from the truth. Hating or loving a logical construction such as a programming language is irrational, illogical and otherwise nonsensical. As a …
Love the sinner, hate the sin
Languages have baggage. Sometimes the baggage is overwhelming and the language dies, and sometimes it limps on. But this article does nothing to convince me that Java is inherently bad, only that bad developers are, well, bad.
At the risk of sounding like a pseud, languages also have baggage that comes from the time of their birth. C focused on lean resource usage because of the environment it was built in, and to hell with the consequences of a stray free(). Java was created in an environment where Microsoft's dominance of computing and history of locking out competition was a real threat, so they sacrificed everything to run anywhere.
The question of baggage is precisely why I believe that Computer Science courses should not try too hard to teach the language-du-jour to undergrads. Far better to teach them about good programming practice, user experience, algorithmic design and hardware than spend weeks on the wonders (or baggage) of Java, c++ etc. This was why Knuth invented MIX, though I freely admit that's a bit over the top for most. But modula-2 or C seem perfectly reasonable to me as teaching languages.
I blame SUN
Most of the JAVA problems are JVM related - SUN did a piss-poor job with backwards compatibility and maintaining stable API.
And if you don't think so, here is an example - how can minor version upgrade (22.214.171.124 to .29) break and application? What was so f&%^$g important that had to change?
Re: I blame SUN
Ironically, Sun did a damn-near-perfect job of back compatibility in Solaris. Must have been an entirely different set of ...system administrators.
Has Java solved the problem of deterministic garbage collection yet?
Maybe I'll get flamed for this, but last time we looked at run big server side apps in Java, we foundered on the fact that just as things were rolling along nicely, the app would run like molasses whilst Java did GC. We did various tricks with the GC (concurrentmarksweep, etc) but try as we might we just could not guarantee that GC would not kick in at the most inopportune moment.
Has the Java community solved this problem? Are there now best practices devs can follow?
Apologies if this is old news - we moved to C (don't laugh, it works) and never looked back, but there are some Real Nice Things in Java that we would love to have been able to use.
Re: Has Java solved the problem of deterministic garbage collection yet?
I don't think so.
It is the average java developer who is the problem; Java has allowed the development of a programming culture that leads to write inefficient and bloated software: As an example, In that article it is revealed that each instantiation of SimpleDateFormat requires more than 100 methods calls and 44 new objects. An App Server with one 1 GB of heap memory struggles to keep as little as 500 user sessions.
Waste of space
So - bad coders write bad code. We knew that already.
It the teaching and not the language
I teach in a technical school setting where we teach how to program. Theory is there but every course has a programming component supervised by the instructor and the quality of the code is as important as the correctness of the result. Unfortunately the university environment is so focused on theory and research that the details of programming are far too often left up to the individual students. That's why most of the code you have encountered is so poor. Its not the language but rather how it is (or is not) taught. I tell my students that if their code produces the correct result then that is usually worth only 20% of the grade.
A sysadmin that does't like Java.
Good company for a frog that doesn't like bananas. Go like something else, I don't like the X factor.
I Dont think I like you either , keep it to yourself.
I think Sturgeon's Law applies here.
I used good Java apps and bad ones. The fact that bad outnumbers good shouldn't be a surprise.
There's a lot of crap written in every language.
Education & weakness
Monopoly of CS education means we have a culture of people who learn Java and nothing else, leading to the 'language as a hammer' thing on an epidemic scale. Then we have a ludicrously popular language used at all sorts of standards in all sorts of places, leading to a poor general standard in the wild, a proportionately higher number of exploits, all sorts of regular patching leading inexorably to a degree of fragmentation… Then you get a feedback loop: Java is so ubiquitous that those learning its esoteric features learn to cherish those for whatever reasons apparent to them at the time rather than developing a more holistic approach to learning by going through the pain of learning other high level languages that might give them better insights into programming as general craft and a more objective view of language features for what they are. These are all problems to do with ubiquity and the monolithic culture of mass adoption.
And yes — as many other posters have noted — Python demands consistent indentation.
Java environment used....
I am a fellow sysadmin, my hate for java is of both the bloated all the same but not quite, bloated JVM's, and Java developers (in my experience, even worse than perl developers)
I will never understand how anyone can write applications so bloated, whose idea of logging is throw unhandled exceptions to a log that grows a few mb per hour.
I hate the fact that I happen to know better than them what environment and dependencies their crappy code depends on.
I hate when they complain about an application that doesn't work on a target machine, and it has to be a sysadmin who finds out why, with no help from the developer, other with an: "there is something wrong on that computer, I do not have time for this" and suddenly is the sysadmins responsibility that the business can not go live.
Re: Java environment used....
> whose idea of logging is throw unhandled exceptions to a log that grows a few mb per hour.
Yes.. what they should do instead is not output the stack trace information that might help debug the issue and just output some random error number in octal.
>I hate the fact that I happen to know better than them what environment and
>dependencies their crappy code depends on.
If your devs don't know how to use maven etc doesn't that say more about your devs than Java really?
Java was only invented by Sun waste as much hardware ressources as possible for any simple job, so they can sell more hardware ...
I'm coding in any sort of languages since 25 years ... and hated Java right from the beginning.
Ah yes, just in case you're interested - I still love C ;-)
nuff said ...
It is hard not to take this as a vacuous article, one launched in an attempt to fill space and time within the context of riding the wave of a temporarily increased and slanted focus on this language - it seems to say a lot, but fundamentally it says nothing while it politically manouvres the writer in to a position where one can only feel there is an attempt to create a distance between the critic and the abstract (as in art) criticism...
I doubt (hopefully) that there are many who steer projects that look at any language as an eternal cure all - unless, that is, they are the type of people who are quite happy taking placebos' in place of apropriate medication... And I do doubt that there are any in the industry who have not had periods of dealing with all kinds of diverse issues and problems with every language - from Assembly all the way up to more abstract deliveries, or in fact any individual tool - from Databases to Graphics applications. (I remember a time when MySQL promoted the lack of transactions as a positive feature, and there are fundamental issues in the sector related to aspects like impedence mismatch, etc, etc, etc - What I am hinting at here is that all things in this industry are dynamic and progressive, even though at time many will only wrongly perceive regression).
There are a multitude of languages, meta languages, translators and various other tools with specific objectives, specific strengths and specific weaknesses - and these are deployed/integrated in appropriate environments with a great deal of due consideration. And with the dynamic divergence(s) in designs of underlying platforms - os', processors, network cards, disks, etc, and the requirements and demands of users, each language can only attempt to be as generic as possible, as safe as possible, and as applicable as possible with respect to framed/stated needs under specific conditions. (Hence the availability of things like RealTime facilities in Java... hmpf).
Even when dealing with something as fundamental as C, deploying to a heterogenous environment, ensures any producer would have to deal with comparatively the same fudamental cross platform issues - and difficulties met, that would appear unique and fresh to each individual team, are usually a lot greater than anything a language that is cross platform off the bat can give. Hence in cases of complex integration - languages/"pooled resources" like haXe/Java/etc exist to abstract such inescapable difficulties.
Why do you teach "da youf" with cross platform tools? - Because you are not only teaching them a programming language, you are also charged with introducing them to the various other aspects, the latter of which even slant towards philosophies, that are related to being in this industry. What they do with the information is up to their abilities, further training, their desires/focus and the problems they meet. You are also trying to get them productive in the safest and fastest possible way in the midst of a multitude of available choices. The slant is therefore towards the best solution/tool that is able to deal with a multitude of requirements under the above conditions. And I am not saying all of this as a Java fan, because I definitely am not.
Selecting any language as a solution - i.e., making statements such as Java has a problem - "Yeah, that is why I use Python! It rocks," does no more than display the naivity of the individual making the statement - when in fact we are all charged with dealing with ever growing systemic complexities.
One can only presume that what is inherently described in the article is less about the failure of Jave and more about a desire to ram square pegs in to round holes. Java is suitable for what Java is suitable for, under the conditions and the multitude of difficulties that institutions, companies and individuals, face daily in a collective quest to develop and integrate complex and growing heterogenous systems/requirements.
The reason why we are professionals is to navigate through such difficulties/problems while understanding the limitations related to doing so - that is where we gain a foothold in the industry as it is and are found to be necessary, and indeed it is from dealing with difficulties that we find our skills and are able to gain from discovered opportunities.
This article was complete drivel.
I'm not sure why as a sysadmin you seem to feel you posses the competency to criticize programmers or programming languages. If your coders say "but it runs on my machine" and your company is developing a cross-platform application in Java, perhaps they should have hired developers with the requisite experience. Management are a bunch of twats, your company is doomed. If you haven't run into a Java application that runs everywhere (Eclipse comes to mind) maybe its because you admin 4 computers with 2 applications. Its also good to know you feel Java is finally dying, we can all finally get rid of that crusty old Android thing.
P.S. If you personally use dozens of languages, why are you still a sysadmin and not a devloper? (by choice I'm sure), and why would you say Python compiles and doesn't require an interpreter? Of course you need a Python interpreter you silly twit. (barring 3rd party compiler). .PYC is byte code like Java . Your career prospects are limited, and I can't understand why El Reg actually publishes your nonsense,
P.P.S I have worked professionally as a sysadmin, and as a developer. (Including Java and Python)
...should just say "NO" to Java.
Open your eyes
I have never seen such an appalling, unfair article on Reg before, and I have seen many.
So, you couldn't learn to code in Java to save your life. Is that platform's problem? I hardly think so.
I have been working with Java for last 12 years, and my love and respect for the platform has only grown. From the very start, I have been using Windows as development & build platform, and Linux as the server (deployment) one. Write-Once-Run-Anywhere DOES WORK, unless the programmer is hell bent on not to let it. There is no other technology which provides such portability.
Yes, the browser based rich-client use-case of Java is not the best in comparison to other rich-client technologies. But, why is it expected out of a technology to be at the helm in every use-case? Java RULES on the server-side and there are very good reasons for that. Having said that, I still think Swing, as a desktop application technology, is amazingly flexible and portable, provided the programmer has enough skills with multi-threading.
The combination of amazing simplicity and enormous power of Java in the enterprise space makes me a big fan of the language. On top of that, the rich community of open-source frameworks make the development so much transparent, simple and fun.
Epic FAIL! Because the criticism is wrongly directed towards the technology.
Reading comprehension fail.
"Hating or loving a logical construction such as a programming language is irrational, illogical and otherwise nonsensical. As a human being with an emotional reaction to the world around me, it is increasingly unavoidable."
"It is possible to code Java applications that are excellent. The ubiquity of the language as a primary educational tool has unfortunately made these the exception rather than the rule. So I hate Java; not because there's anything inherently wrong with the language, but because of a decade's worth of people who still haven't figured out how to use it as designed."
Like so many others, you have completely failed to actually read the article. I explicitly state that technology is a logical construct for which it is irrational to "hate." I also explicitly state that java [i]can[/i] be used for good. I also – the article is right there, go read for yourself – explicitly state that my negative reaction to java is an irrational emotional reaction brought about by the totality of the extended universe of issues that surround it.
The article is not about “how terrible Java is.” Java is a tool. The article is about how “horrible abuse of this tool by our entire industry has meant that it is a significantly larger frustration – and even liability, from a security perspective! – than the marginal benefits it provides.
Bonus points for skimming through so fast that you assume the only Java I ever coded was the crap I had to do in my first year of university. The anecdote explains why I left university seeking something better. Is followed up immediately thereafter by a description of how that was a bad plan and I ended up developing applications anyways. Those applications include Java, which I am still forced to use to this day.
Perhaps you need to detach your personal sense of self worth form the language you program in. There is no need for a tribal reaction; criticism of Java) or the wider Java ecosystem) is not criticism of you. If the sub editor’s title, or the opening sentence of the article [i]which is immediately followed by an open admission of trolling commenttards for fun[/i] sets you up emotionally to skim through an article with a blinding rage, there are problems. If you skim so you can quickly get to the comments section and core dump some hatred, there are all sorts of questions about how you define yourself personally and professionally that need to be asked.
If you cannot acknowledge the issues surrounding your choice of language, why should anyone trust you as a developer? You need to know about – and acknowledge – the problems before you can adapt to and overcome them. Tribalism regarding technology is an indication of inadequate understanding of the role of that technology.
User point of view
I am a regular user of the IT Reporting system which relies on Java. To be honest, this is very painful from the begining. Let me list down the pains -
1. It took ages to load the interface. I have seen reporting systems from outside our domain load much faster than this internal system.
2. I can't update Java. This is the point mentioned in the article. Whenever I update Java, the system broke down and my IT team screams at me not to update Java. I do not understand why things break down with every single update.
3. The system refused to load some "Unsecured" elments and I have to choose either to block the elements (God knows what I am blocking!) or allow them (God knows what I am allowing!).
The "Write Once, Run Anywhere" looks good on paper and gained hugely popularity in some circles. However, the user experience was always worse and will remain so against native code. Frankly speaking the age old truth - "One size does not fit all" still holds true.