Java haters, gtfo
Why are so many people angry at Java? I have to say, there’s something awfully hilarious about this new breed of Java hater. Hilarious in the way that seeing your autistic mongoloid 22 year old second cousin, while drooling idiotically and grinning proudly, decide to drop trow and masturbate in front of grandma at the Christmas family reunion only can be.
There’s enough of them now for us to form a good caricature of said figures, which is bad news for them I’m sure as their self-perception is that of unique visionaries, rather than the tawdry mildly autistic self hating wankers they are. So what do they all have in common?
The first glaringly obvious point of commonality is that their new language is something with low adoption (compared to Java), is fashionable (this month/year), and is filled with ex-Java people. These are usually people who have been ‘demeaned’ by having to write non-sexy useful code, such as the boring apps that are the daily reality of programming. The daily reality being the need to achieve something thats useful to someone else, rather than some way of seeing exactly how far you can drag out your flaccid penis along a ruler.
The second point is that there has to be some barrier to entry. It can’t be something thats generally useful for which you can hire easily, the more obscure and awkward, the better. Ruby’s genius is in being just about hard enough for its developers to feel clever when they manage to get things done, thus continuing the by now familiar desperation that our industry has to feel self-important and worthwhile. It’s basically the latest manifestation of the ‘coding is an art I’m an artist nobody gets it boo fucking hoo’ syndrome.
We’ve always had lisp people, who are convinced their moment is just around the corner. While most of them are dead or retired now, the fucked up autistic genes that caused that sick disease is still rampant in society, and we’re seeing a new generation of infections in the form of all the ruby, groovy, and scala dryhumpers.
Another commonality is a deep, inexplicable insecurity that drives to constantly and belligerently squeal out their messianic drivel at every random passer-by. They’re the Java equivalent of the crazy dude at the corner literally thumping his bible and demanding you bend over and take it up the arse from Jesus or else your children will be eaten by some combination of Arabs, Jews, and Black People.
Finally, what’s most despicable about these people is their total and utter lack of self perception or insight. I honestly suspect that many of these so called ‘advocates’ are mildly autistic; they have no conception of any thoughts outside of their own, and assume that everything that goes on in their head is happening in everyone else’s too. The cognitive dissonance between their mental map and reality results in all this anger and hatred, and they end up drooling foolishly and twitching uncontrollably (sadly often in the vicinity of a keyboard).
Here’s a novel idea, how about getting a job and shutting the fuck up about it? Were you so unloved as children that you’re so desperate to squeal out your emotions to every inanimate object you come across? Are you THAT insecure that you so desperately plead for attention whenever you sense sentience nearby? Perhaps your mothers were better off drowning you as children, instead of the severe emotional beatings you seem to have received instead.
So really, all you dynamic language freaks, all you closure nazis, with your fancy scripts and your typeless nirvana, how fucking hard can it be to get the fuck out of our world, and go try and get a job doing what you asshats actually WANT to do? If your life is so great, why the fuck must you CONSTANTLY hassle us and shit in our coffee?
May 17th, 2008 at 4:53 pm
“Here’s a novel idea, how about getting a job and shutting the fuck up about it? Were you so unloved as children that you’re so desperate to squeal out your emotions to every inanimate object you come across? Are you THAT insecure that you so desperately plead for attention whenever you sense sentience nearby? Perhaps your mothers were better off drowning you as children, instead of the severe emotional beatings you seem to have received instead.”
Pot.Kettle.Black.
May 17th, 2008 at 5:15 pm
I totally agree. Java isn’t perfect, but it is fine the way it is. If you don’t like it, use another language. Quit bitching that Java isn’t perfect for you. It is fine for 95% of the people that use it daily.
May 17th, 2008 at 6:17 pm
So fucking true. Just enter any java irc channel and see for yourself if you don’t believe (hi, cheeser). some kids just should have been drowned in the next river with stones tied around the neck. now they try to fuck people in the web with their ugly short and tiny genitals!
May 17th, 2008 at 6:27 pm
i’m happy to see a post on bileblog! i’ve been needing a good rant like that and you always deliver.
long live the bile blog!
nanreh
May 17th, 2008 at 6:59 pm
Yeah, hating is Hani’s speciality - how dare anyone else Trespass in his domain.
May 17th, 2008 at 7:02 pm
Ugh. Suggesting these ADHD afflicted java haters get jobs and try to be productive just mucks up things for those of us who are working productively trying to get things done in our dev shops. These people just waste the headcount and all too often they are trying to make up reasons to spend time on their own pet projects so they can use this stuff that they want to play with. Anyone interested in funding a foundation dedicated to researching this afflication and trying to get these people some treatment?
May 17th, 2008 at 8:04 pm
Hani, I want to have your babies.
May 17th, 2008 at 8:22 pm
Wow, reading on twitter that you had a new post made me all excited like when George Lucas announced he was doing the original trilogy again after all those years…. and then reading it is like watching all those scenes with Jar Jar in them.
Come on Hani, you can do better than this. Your posts used to have a good point, and all I see is a Java Rules/your language sucks diatribe laced with profanity and juvenile name calling. Beneath all of your antics you used to have a point. But now I think you are as dated as the language you are defending. People would read you in spite of how you said it, but how you say it seems to be all you have left now. What once was great…
May 17th, 2008 at 9:16 pm
“These are usually people who have been ‘demeaned’ by having to write non-sexy useful code, such as the boring apps that are the daily reality of programming. The daily reality being the need to achieve something thats useful to someone else, rather than some way of seeing exactly how far you can drag out your flaccid penis along a ruler.”
Perfect characterization. Can’t agree more. I think it’s got to do with Java’s area of usefulness which is mainly in enterprise middle ware. Stuff there may not be fun for those cool kids, but it requires good software engineering principles that Java so nicely helps you with.
Hey, even the Relational Data Modeling isn’t cool!
May 17th, 2008 at 9:25 pm
You know, Java doesn’t come in a cute little Duplo-block format. And a script kiddie can’t start using it overnight to get their Web 2.0 app up and running that later won’t scale. No WONDER it has haters!
May 17th, 2008 at 11:35 pm
Hey he’s back! The MC of Java is back!!
May 18th, 2008 at 12:42 am
This mascara-wearing freak is one of the worst offenders:
http://blog.obiefernandez.com/content/
May 18th, 2008 at 4:26 am
All though I agree in the foundation of your post which is that people should stop ranting at other languages which they themselves are not using, you seem to go into that very trap yourself. You attack others for taking blows at Java for a, b or c while you at the same time take blows at other languages…?
Either the whole idea of this post was “linkbaiting” or some other sort of baiting in which case I went for it, or you are actually serious in which case you’re no better than the ones you’re trying to attack. Language wars are so exhausting and pointlesss which I hoped before reading this post that this post was about. Language wars are for developers the same as suicide bombers are for religious fundamentalists. A complete waste of time, human life and in the end hurting the cause…
May 18th, 2008 at 4:50 am
I blame Bruce Tate. In between telling you endless tedious, boring, “WE DON’T FUCKING CARE, BRUCE, HIT A ROCK AND DIE!” stories about his white water rafting trips, he’ll tell you that Java is the devil (even though he apparently never used it), and you should use Ruby. “Beyond Java” sold enough copies that suddenly money was in the water, and the other loonies and con artists all came running to preach their religion.
O’Reilly and Pragmatic Programmers feed this insanity because they want to sell more books. A new language can sell a lot of books.
It’s not a matter of “don’t comment on a language you don’t use”, it’s a matter of “don’t try to proselytize your new religion to the members of your old religion”. Anyone who goes around proselytizing religion should be shot in the face, because they are obviously trying to steal your money and fuck your children. That’s all that preachers ever do.
May 18th, 2008 at 5:10 am
Clever. Instead of actually addressing the issues people have with Java you flail about with barely cogent ad hominems.
It’s a simple fact that Java has horribly broken object and type systems (primitives aren’t object?!). It’s also missing a lot of useful features. For example, no first order functions (i.e., can’t pass functions, no closures), no macro system, and no multiple dispatch.
And those are the first few problems/deficiencies that come to mind.
But, I’ll also admit that Java also does some things very well. The JIT compilation/hotspot detection is flat out amazing. And they seem to been taking steps in the right direction since Java 5 with generics and autoboxing.
I don’t think I’m an evangelical advocate of any particular language; just an advocate of using the best tool available. And there are very few situations I see Java as being the best tool. I’ll grant that it’s a great replacement for C++, but the realm for those sort of languages is narrow - and getting narrower.
I think you’ll grant that very low level CPU bound tasks (like writing OSs, scientific computing, etc) are the purview of low level compiled languages like C - which let you squeeze every bit of performance out of the hardware.
But, for I/O bound stuff (95% of webapps, business apps, and scripts), it makes more sense to use the language that is fastest to develop with, doesn’t it?
Why not use a dynamic language with fancy features that lets you develop faster? Or is your contention that closures, macros, multiple dispatch, functions as objects, etc. don’t help? (If that is your salient argument, I’ll be happy to provide counter-examples on request).
Not to mention that Common Lisp (and several other dynamically typed languages) allow a developer to optionally give the compiler type-hints and be just as fast as C++/Java when need be - further encroaching on Java’s domain.
I’ve rattled off half a dozen features that Common Lisp has that Java doesn’t: I challenge you to name 3 that Java has that CL doesn’t.
And to pre-empt the most common response: Common Lisp (and many others) can even compile down to bytecode that runs on a JVM - getting rid of any portability issues.
May 18th, 2008 at 6:20 am
I, for one, would like to welcome back our Bile overlord. I missed ya.
May 18th, 2008 at 6:35 am
@Shaneal Yes, by all means use the language that’s FASTEST to develop with. Why bother worrying about scale or performance or speed? Your users won’t care if your app goes down all the time (Twitter) because it can’t scale properly (Twitter). Just throw more servers at it. Do you by any chance work for a hardware company?
Hani, I’m so glad you are back. I had truly forgotten how well you were able to lure the gits out of the woodwork. ;)
May 18th, 2008 at 6:57 am
CL Lisp doesnt have:
1. Usable open source report builders.
2. Time-proven, battle hardened multi-database ORM’s
3. OLAP tools
4. Easy way to create desktop applications
5. Mobile application support (handsets, pda’s, embdedded etc)
6. Good charting libraries
7. Enterprise schedulers
8. A variety of open source and commercial options for any task (choice + healthy ecosystem)
9. Millions of developers to call on at any one point (hiring is hard)
10. First class IDE’s
etc etc etc I could go on forever.
now, none of those are language features, but anyone who disregards the java platform in a discussion like this is moron.
None of us would use java (well few anyway) if java libraries + open source + commercial platforms weren’t as well done. Javas documentation alone trumps almost every other platform.
Its the platform stupid!
May 18th, 2008 at 7:11 am
It all started when Ruby gave birth to Rails, a new bread of wannabe programmes was born. Suddenly, sys admins, web developers and designers where calling themselves programmers! And worst of all, with almost no knowledge of design patterns, system architecture or computer science in general, they started preaching their hatred towards Java and .Net. They even made silly videos like “Ruby vs Java”. It’s clearly that Ruby fanboys like to be treated as retarded: “Press enter and I’ll create it for you. Don’t ask why.”
May 18th, 2008 at 7:47 am
You are so disrespectful to your readers. Some of us cannot get passed the first paragraphs due to the bad language.
May 18th, 2008 at 7:55 am
LOL, if you can’t get past the first paragraph you are obviously not a reader of this blog.
May 18th, 2008 at 9:26 am
(((ok bitch)
(you asked for it)
(here goes))
(im taking out the fucking
(bold paranthesis on you))
(you fuqing angered an expert programmer)
(ive been here for (expt 3 88888000) years longer than you)
(ive read sicp twice)
(i know every programming language in the world
including apl)
(if u wanna batl (lets do it))
(ill crush you like a bean))
May 18th, 2008 at 11:00 am
You stupid RoR dumbfucks never get it. It’s not the language or the framework he’s talking about, it’s YOU. You’re all fucking pathetic!
May 18th, 2008 at 11:02 am
@Mark Claus
> “And worst of all, with almost no knowledge of design patterns, system architecture or computer science in general, they started preaching their hatred towards Java and .Net.”
I so much agree with your observation.
It corresponds exactly with the things I have observed in practice. In general terms, people ‘hating’ Java are the ones who have no education and haven’t received any formal programming training. They want to start building things, but don’t want to invest any time and energy to actually understand what they are doing. Their reasoning is like: “If I want to build an e-commerce site, I want to think about e-commerce things. Screw those design patterns and software architectures”. Since the Java community for the most part consists of people NOT thinking like that, they automatically hate us.
Those people however should really not pursue a career in CS. They should do what they do best: create fancy ideas for products and negotiate those with sensible and knowledgeable programmers for its implementation.
Program languages in general are hard since the problems they are required to solve are hard. An easier syntax or some easier API functions don’t automatically make the underlying problem less hard. On the contrary, it only seemingly hides this underlying problem. Without any understanding about fundamental CS concepts, products produced by these unskilled programmers in ‘easy’ languages always fall apart. ALWAYS…
The thing is, we, the real programmers, are then hired to fix stuff that was broken from the start. Stuff where people just started programming, implementing every possible case as a new piece of code, without thinking of any abstraction or communication between parts in their application. Since the language was seemingly so easy, and so dynamic, WHAT COULD POSSIBLY GO WRONG?
Well, I’ll tell you: the first time a bug creeps up, you don’t spend hours or even minutes to track it down, but days to weeks! The first time you need to make a change to the business rules and suddenly find those rules are implemented in 12 different ways in 30 places. You spend days on updating everything at all those 30 places, but after your change has gone into production you suddenly find the rule was actually implemented in 20 different ways in 90 places. In 30 places the new rule is now being used and in 60 other places the old rule is used…
-THAT’s- what goes wrong if you give people access to a tool (a programming language) for which they are too stupid to use it properly. I’ve seen this sh*t for many, many years now, almost on a daily basis.
May 18th, 2008 at 11:08 am
WOW! THANK YOU!
May 18th, 2008 at 11:08 am
Shaneal,
> I’ve rattled off half a dozen features that Common Lisp has that Java doesn’t: I challenge you to name 3 that Java has that CL doesn’t.
Well, I can’t think of any feature that Java has that Ada doesn’t, so Common Lisp is in good company.
May 18th, 2008 at 11:59 am
A bile after 9 montha?!!!! When did you come back from hell?
May 18th, 2008 at 12:25 pm
Has anyone tried Groovy? It is truly the Next Generation Java - it seamlessly integrates with Java and the JVM.
May 18th, 2008 at 12:26 pm
Shaneal Manek Says:
“And those are the first few problems/deficiencies that come to mind.”
What type of business application can Java not write because of these “deficiencies”?
Do you realize that you are the person that this blog is about?
May 18th, 2008 at 12:38 pm
“Clever. Instead of actually addressing the issues people have with Java you flail about with barely cogent ad hominems.”
Capt. Obvious, we salute you. I know it has been 9 FREAKIN MONTHS since a posting on this blog, but have people really forgotten what this blog is about already?
May 18th, 2008 at 1:30 pm
What I like best is when ruby fags try to solve everything with regular expressions.
often looks (warning, no real regexp!) like
#$%RT#$E$%#T#$%@#RW$@#$@RRFT#$R%#$TR#$TR#$FEWR$RT#$RR#$$R#$#$#RE#$%#%$@%@$@$@$RFR$#R#$*
and is always sooooooooooooooo easy to maintain :-)
May 18th, 2008 at 2:42 pm
Smurfette,
Just STFU.Its his website and he can rant what he wants to. Its his fucking space, and if you dont fucking like it, just stop reading the shit and go back to what ever it is you do, or better yet, start your own rant about how hani rants.
Peace.
Celeron
May 18th, 2008 at 7:07 pm
Replace Ruby/Rails with Macintosh and Java with Windows and its the same story. A bunch of hysterical drama queens on one side and on the other people shrugging their shoulders and going “whatever”.
May 18th, 2008 at 8:16 pm
@platform:
1. Usable open source report builders.
-There are several. I’ve personally used Albert and documentation-template, and can say that Albert is on par with Doxygen.
2. Time-proven, battle hardened multi-database ORM’s
-Again, there are several. I’ve worked on a few enterprise webapps, and have personal experience with CL-SQL (which a previous employer of mine wrote and open sourced) and Elephant.
3. OLAP tools
Again, CL-SQL transparently and easily provides most OLAP features.
4. Easy way to create desktop applications
I’ve personally used Cells-GTK, which I find far easier to develop with than even .Net. I’ve also heard good things about cl-g.
5. Mobile application support (handsets, pda’s, embdedded etc)
I’ve actually written an IPhone widget, and it’s pretty simple (using hunchentoot, cl-who, cl-script, and html-template). This is pretty far outside my area of expertise, so I don’t know much about other platforms. But, I know that there are CL implementations on Mips, Arm, etc.
6. Good charting libraries
Cl-graph/cl-dot provide interoperability with graphviz (which I have used). I’ve also heard good things about cl-plplot and plot-2d.
7. Enterprise schedulers
My first choice would be my previous employer’s flagship product: Webcheckout.
8. A variety of open source and commercial options for any task (choice + healthy ecosystem)
Take a look on cliki.net. You’ll find several libraries for most anything you want to do.
9. Millions of developers to call on at any one point (hiring is hard)
I’ve never had to hire a Lisp dev, so I can’t speak from personal experience. But I’ve heard ITA Software, for example, has hired over 200 Lisp Devs in Boston alone in the last few years. And Lisp is easy to learn. You can teach any modestly good programmer/mathematician lisp in a few weeks. Not to mention you generally need fewer Lisp devs to do the same work.
10. First class IDE’s
Slime+Emacs is by a pretty huge margin the best IDE I’ve ever used (I mainly use Eclipse for Java stuff - I have to admit it kicks Emacs+JDEE’s ass). But Slime provides automatic documentation, lets you compile any expression into a running core, easy to use cross referencing, a ridiculously powerful object inspector (I can arbitrarily modify/view anything on the fly at runtime!), and far more. Take a look at http://common-lisp.net/movies/slime.torrent
I’ll be the first to admit that anything I can write in Lisp I can write in Java. After all, they are both Turing complete languages - so is assembler for that matter. But I can do it far more quickly and with less bugs with Lisp. And, most people who know Java and some of these new-fangled multi-paradigm dynamically typed languages seem to agree.
@henk and mark:
Have you people never heard of the bulverism fallacy? Attack arguments, not people.
May 18th, 2008 at 9:17 pm
@ Markus, @ Henk:
It’s about “right tool for the right job”. I think you need to differentiate between Java as a language and the J2EE. Java is an easy language to learn for sure but the number of frameworks around J2EE is what makes things very complicated. A lot of people who like Java *hate* J2EE. You can spend time looking at so many frameworks and not sure where to start. Too many choices around IDE’s and the poor developer productivity for most of them is what makes people hate J2EE.
Now, take a look at .NET. Again, a lot of developers who disliked J2EE liked .NET. Why? You get VS.NET which is by far the best IDE we have in this industry. Everything is controlled by MS (which has the plus and minus) . In general .NET gives high *developer* productivity.
> create fancy ideas for products and negotiate those with sensible and knowledgeable programmers for its implementation:
Many C++ developers think that Java folks didn’t learn the hard stuff you need to know to be a good developer because they content “Java is an easy language to learn and anyone can do that”. Joel (www.joelonsoftware.com) lamented on the universities that teach Java in CS curriculum (a very simple language) instead of C++ (a hard but useful language for the product developers). But, I’m still not sure if this industry really needs a C++/Java type programmers with knowledge in Design Patterns etc to solve every problem.
May 18th, 2008 at 9:42 pm
This post is a pretty good example of the Blub Paradox: you’re satisfied with the language you happen to use, because it dictates the way you think about programs. When you look up the power continuum, you don’t realize you’re looking up. You just see weird languages. You can’t figure out why those languages are better because you don’t know what better is.
If you enjoy your Blub and use it to make lots of monies, great. But it won’t change the fact that it sucks. Sorry.
May 18th, 2008 at 10:15 pm
rubysexual, what does Ruby running 500 times slower than C do for dictating the way you think? I bet it makes you think a lot about servers, servers, servers. I never have to think about hardware because I use a language that is production ready. I’ll check out Ruby in 3 to 5 years.
And, Blub? Just because Paul Graham invited you over for pizza and video games and then took naked photos of you, doesn’t mean you have to use his ridiculous terms. What’s next, a discussion of how language debates affect Aunt Tilly? Be careful, ESR and PG will be having a war to see which can fit you with the biggest made-up-jargon butt plug.
May 18th, 2008 at 10:58 pm
Lisp
May 18th, 2008 at 11:00 pm
Java has evolved alright over the years and kept up. But I really don’t enjoy the complexity of Eclipse, the pain of deploying Java Web apps or the fact the language still doesn’t have closures. Until I find non-kludge ways around these annoyances, I’ll stick to my other languages, thank you.
Or you know, you could help make the Java language/community better, instead of angrily ranting on a blog about how no one likes Java. At least that’s how other communities behave, all the new fade scripting language communities listen to their users and try to accommodate their desires.
May 18th, 2008 at 11:09 pm
@joe, us Ruby programmers solve everything with blocks/lambdas :)
May 19th, 2008 at 12:45 am
This blog is completely worthless, and tech “rants” and related gossip/infighting, especially of this type, are about as inane as it gets.
May 19th, 2008 at 1:44 am
“If your life is so great, why the fuck must you CONSTANTLY hassle us and shit in our coffee?” - I guess this sums up all there is to be said about the RoR and Scala and other small-dicked communities that have a problem with Java (and with anything else that is not object of their work).
I believe the community kind of had it with the “silver bullet” language/framework. It’s just a disappointing atmosphere with less and less constructive criticism and more and more fanaticism. I really believe some of these guys should really grow up and mind their own business. Each of the communities has to loose due to this mis-allocated energy in directions that do not provide anything useful for the articles/blog readers.
May 19th, 2008 at 2:05 am
OMG, some people don’t want to get it!
I mainly used Java before I came across Ruby. And believe me I had good reasons to fall in love with the latter one.
If Ruby would be faster, and had all the LIBs Java has, there would be NO reason for me to go back. Why would I? Ruby has a much better syntax and is not so verbose (because of dynamic typing), which results in better maintainable code.
I am not saying Java sucks, it is good, but everytime I have to write Java code, I wish I could write it in Ruby instead.
May 19th, 2008 at 3:18 am
Having used both Java and Ruby in the last years, I can say that Java has a very good platform but the language (syntax) sucks. And it’s true that the development cycle is much faster with Ruby (about three two four times).
You have to look at the requirements and decide about the implementation technology - there’s no solution for all needs (and I do not hate Java - I recently chose it for a new project).
May 19th, 2008 at 6:11 am
@Gargi
>”I think you need to differentiate between Java as a language and the J2EE. Java is an easy language to learn for sure but the number of frameworks around J2EE is what makes things very complicated.”
The fact that there are quite a lot of frameworks out there that build on J2EE (which is an old name btw, it’s Java EE now), is huge indeed. But that’s not a fault of Java EE itself. Other people just start building their own framework and they are free to do so. There are quite some toolkits out there for C++, but it’s not C++ itself which is to blame for this. And besides, Java EE contains very few overlapping functionality. Take for example JSF, which is the standard web framework in Java. There is only -1- web framework in Java EE. Now there may be a Spring MVC out there, and a Tapesty and a Wicket, and a web4j and a… but those are all third party efforts. Nobody forces you to use them. If you don’t feel comfortable in choosing something, just stick to plain Java EE. I.e. download the Java EE SDK from Sun and build your apps with that.
Now it’s true that Microsoft did a very good job on .NET, ASP.NET and C#, but at the same time Microsoft is also known for creating competitors of its own technology.
>”You get VS.NET which is by far the best IDE we have in this industry.”
I won’t argue that VS.NET isn’t a good IDE. In fact it is, but I don’t think this is what the argument is about. .NET has 1 excellent IDE. Java has 3 good ones. Depending on your personal preferences, VS may be slightly better than say Eclipse or slightly inferior, but the differences aren’t that big. I’ve been using VS since version 5 and Eclipse since version 2 on a daily basis. Since I use both technologies I may be slightly biased but I really think the .NET/C# crowd and the Java EE/Java crowd aren’t hostile against each other. On the contrary, they mostly seem to share the same mindset. It’s not for nothing that ASP.NET and JSF are quite similar, and Java the language and C# are really quite similar too.
It really seems that the entire argument is about the “I’m a fancy dynamic person, I don’t want to learn” type of person, against the “I’m a thoughtful and calculating person, I really love learning” type of person. These two groups indeed seem to be fairly hostile against each other.
May 19th, 2008 at 6:39 am
Shaneal Manek wrote:
“But, for I/O bound stuff (95% of webapps, business apps, and scripts), it makes more sense to use the language that is fastest to develop with, doesn’t it?”
this is complete BS, sorry. Did you take into account scaling behaviour when you wrote this?
If you have a slow web app, it will need more hardware when your user numbers increase…
Also, even your few users will probably appreciate low latencies.
May 19th, 2008 at 7:27 am
@Bernd, with that logic we should all start writing webapps in C.
May 19th, 2008 at 7:33 am
@Arjan:
“It really seems that the entire argument is about the “I’m a fancy dynamic person, I don’t want to learn” type of person, against the “I’m a thoughtful and calculating person, I really love learning” type of person. These two groups indeed seem to be fairly hostile against each other”
I’m not sure anyone would bother arguing with “I don’t want to learn” types. There are people with great capabilities in PHP/Ruby streams. Do you think those who write so many frameworks around PHP or build great applications aren’t the type who don’t want to learn? And there are people in that category who dislike Java EE. They do have a valid argument. It’s to do with Business realities that sometime .NET/Java EE just doesn’t work.
There is also a widely help perception, esp. about Java folks that to them “Java is the only solution to all problems. Only Java applications can scale and nothing else.”
Sure, there are developers in PHP/Ruby streams who think PHP is cool . They like to impress with flashy UI but won’t have any architecture around it nor or they capable of creating one. To them, Java is more like a trouble for their jobs than a respectful competitor.
There are some types of people 1. The one that chooses the best tool for the job 2. The other that has terrific Architecture/CS skills but is blind in love to one platform 3. A group that has very average skills in the leading platforms (Java/.NET) but would like to make noise about how theirs the only great platform in the world. 4. The highly competent script developers who are just as capable of reaching 1 or 2 (above) if they would like to but probably choose not to. They get very angry when ref. to by less competent Java programmers as script kiddies and incapable of learning stuff 5. The flashy dynamic cool web 2.0 guy in the disguise of a software professional.
The closer one gets to 1 (above), the better. But, not many can really get there.
May 19th, 2008 at 8:20 am
@Gargi
>”There are people with great capabilities in PHP/Ruby streams.”
I’m sure there are. We even happen to have one such person working at the office with us. Typically those are not the guys that blindly rant against Java stating that they “hate” it. Undeservedly or not, it’s hard to ignore the fact that especially PHP has been an enormous ‘lamer magnet’. Since the PHP community mostly does not encourage people to use design patterns while the Java community almost always does, it’s easy to see how those ‘lamers’ build up a hatred against Java. Every time they try Java and ask a question about it on some forum they don’t get an answer to their question but get responses like: “WTF!? You should not embed business logic in your view!”, or “Geeze man, learn CS basics, you are repeating yourself all the time!” or “C’mon, that’s not building software dude. You have injection holes everywhere”. If they ask the same kind of question on a PHP forum, the response is more likely to be: “Copy this and that fragment from phpfreakz and it will probably work in most cases”.
Next to that there are of course knowledgeable people who create PHP or Ruby libraries and frameworks. I think that in their hearts those people don’t really hate Java at all, but they do have to make some noise in order to put the spotlight on their technology. This happens all the time. Spring people bash Seam, the web4j guy rants about Spring, etc. The argument here is specifically not about framework builders, it’s about the normal programmer.
May 19th, 2008 at 9:46 am
Didn’t really understand… Is a programming language a religion?
May 19th, 2008 at 9:53 am
Well, people sure can get religious about languages in general. So why not about programming languages?
May 19th, 2008 at 10:31 am
@Bernd:
Scaling, for a lot of business apps, doesn’t get CPU bound for quite a while. If your app spends 9 out of every 10 minutes of runtime waiting on the network/database, it doesn’t really matter if it uses 5 seconds of cpu time every 10 minutes or 20 seconds of cpu time every 10 minutes. This isn’t the performance profile of all code (hell, I’ve worked in bioinformatics where we need to squeeze every last bit out), but it is how many business/web apps work.
I’m not saying performance never matters, but I am saying that you should profile and only tighten things up when it does. Any sort of abstraction (object oriented code, design patterns,functional programming, virtual machines, etc) are going to deal you a performance hit. But, often that performance hit is more than outweighed by the speed, readability, and maintainability you get in return (if it wasn’t, we’d all be writing machine code all the time).
For example, I once wrote some small crypto libraries in Lisp (on the order of 2000 lines). I wrote it in great style (i.e., readable, maintainable, functional) . However, it was unbearably slow. I profiled a bit, and found that a huge amount of time (over 90% if memory serves) was spent in this modular exponentiation function:
(defun mod-exp-naive (b e m)
“Computes b^e mod m naively”
(mod (expt b e) m))
So, I rewrote in a much lower level style (bitshifting, logical ands, etc):
(defun mod-exp (b e m)
“Computes b^e mod m quickly”
(declare (optimize (speed 3) (safety 0)))
(let ((result 1))
(while (> e 0)
(when (= (logand e 1) 1)
(setf result (mod (* result b) m)))
(setf e (ash e -1))
(setf b (mod (expt b 2) m)))
result))
I ran some benchmarks at the time, and the low level modular exponentiation code ran about 90% as fast as native C code (and, if I actually needed that last 10%, I could have just written that one function in C, and talked to it through a foreign function interface like CFFI).
And that’s exactly why I like Lisp. For 90% of the stuff I do, run speed isn’t that big an issue - development time and readability/maintainability are. I like having map, function passing, direct access to the meta-object protocol, and all the other abstraction a high level language gives me. But for the 10% (maybe less?) of code where speed matters, I can drop down to a low level style. With lower level languages, like C/++/Java, I don’t even have the option of using high level constructs like map or dynamic typing.
May 19th, 2008 at 11:28 am
I’m a .NET developer, but I gotta tell you…I LOVE java! I drink it all the time while I code in C#.
:P
D
May 19th, 2008 at 12:10 pm
Hey, Hanibal is back!
May 19th, 2008 at 12:19 pm
It always entertaining when people throw out speed factors when comparing 2 languages for a web based application (which I believe both Ruby and Java are well suited for). The fact of the matter is that the people that actually DID do the benchmarking have found that in most cases approximately 80% of the cpu time is in the DB which make the individual language times practically irrelevant.
The real irony of this post is that Java itself had to defend against C++ bigots about 15 years back who constantly complained that Java was a joke language, was way too slow, and it was giving a false sense of security to anyone and everyone. (I was one of them… my apologies) Most of us eventually switched to Java for good reason as it was indeed much easier to code in, got the job done faster, and it was easier to bring new recruits up to speed with it.
It was also funny to read the responses regarding maintainability and how Java is apparently better suited for it as I have been brought in to fix the worst Java spaghetti code you care to imagine. The key to making a great coder is picking a language that they will enjoy. If they are excited to work and interested in the language itself, the quality of the code is usually far superior than if they don’t. I have found that the LOC of ruby is usually 1/3 - 1/10 with respect to Java and is therefore starting off much more maintainable. Ofcourse if a ruby coder goes out of their way utilize the meta programming features of Ruby to monkey patch the monkey patch of the monkey patch then that is also fairly hard to maintain as well. :)
I usually found that the most vocal proponents of one language or another are the most ignorant. If they only took a step back, learned the other language, and THEN made an informed decision there would be much less fuss and they wouldn’t have the need to defend “their” particular language so much
Lastly, I don’t see the Ruby community constantly bashing the Java community. It’s mostly a bunch of coders having a great time coding in Ruby and “getting stuff done” of which Rails is a shining example and they simply enjoy to talk about the language in general. I for one love Ruby and after programming my 1000th callback in C++, or anonymous adapter in Java simply get blown away when I use blocks in Ruby.
Java is loosing it’s foothold on many market segments of which C++ did before and eventually the same will happen to Ruby, but for now, in today’s market, ruby is an excellent choice for many (not all) solutions.
Oh.. the one thing I truly regret is not saving some of the really entertaining things I said and read way back when. I suggest that the most vocal of you, save this archive and read it back to yourself 5 years from now and I am sure you will get a great kick out of it. I for one wished I kept a quote from a former boss of mine that told me that IE would never get a foothold on Netscape.
ilan
May 19th, 2008 at 1:54 pm
@lolz
Java performs the sh*t out of C, thanks to the hotspot compiler
@Shaneal
Maybe we should wait for some real-life numbers, say “the same” business app coded in a Java vs done in RoR.
May 19th, 2008 at 2:05 pm
We were afraid that this would happen. I’ve posted previously. Hani died over one month ago in an auto accident when his car rolled-over. Unfortunately, a co-worker, Carl, had Hani’s password to the bileblog and has recently been posting under Hani’s name. As a manager at Formicary this was brought to my attention and Carl has recently been “let go”. As you can tell, this blog post doesn’t reflect the cleverness that Hani possessed before his death. We are currently working with jroller to terminate access to this blog and any future mention of our company.
Please send your condolences to formicary.net’s european or us offices. Your messages will be forwarded to his family.
Regards,
Larry Marshall
Sr Manager
Formicary
May 19th, 2008 at 3:18 pm
Wow, great post.
May 19th, 2008 at 3:22 pm
Hey Folks,
reading these inane comments with ruby -vs- java developers each taking themselves seriously has given me gas. I’m going to have to run it off now in my tight black pants.
http://www.thearcmind.com/confluence/download/attachments/4071/menintights4.png
Remember,
I izz thuh programmin shizzle
May 19th, 2008 at 5:44 pm
@Bernd
I don’t think you understand how JIT compilation works. Ceteris Paribus, at the very best, Java can have performance almost as good as C. Sun has done an amazing job with Java’s performance, it’s usually within a few percent of native code. But under no possible set of circumstances can it even theoretically “perform the sh*t out of C”.
And I already provided you with some real world example. The most CPU intensive part of a crypto library is the pathological test case for a high level language like Lisp. And it still performs within a few percent of C.
May 19th, 2008 at 6:13 pm
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all
Looks like Java lost out to Pascal, Haskell and Eiffel. It’s kind of hard to beat pre-compiled machine code. Have you been drinking too much Java lately?
May 19th, 2008 at 8:08 pm
[...] The BileBlog » Blog Archive » Java haters, gtfo (tags: java) [...]
May 19th, 2008 at 8:49 pm
All you anti-java crusaders are so pathetic in posting a comment here with stuff like “my language is better because it has this feature when java doesn’t”
You clever bastards sure haven’t noticed this is not a rant about the technology itself but more about your pathetic habit to advocate when no one gives a shit.
Reminds me of these clever dudes who were all about PHP and trying to convince others this was THE shit…. until they discovered how ugly their beloved language was when they tried to use it on real world projects.
Too many people talk without really knowing what they’re talking about, too many brainless zombie sheeps surfing on the “saying java sucks is cool” trend.
May 19th, 2008 at 11:53 pm
@10, the same could be said about those who endlessly advocate Java, when there are instances when it is not the desired language for the assigned task.
May 20th, 2008 at 3:06 am
Relax you lot. With the upcoming version of JBoss it will be sorted. We got a truckload of tools for making all the Web 2.0 tools you can imagine, knowing none or little Java.
Welcome back Hani!
May 20th, 2008 at 4:35 am
@Shaneal Manek
>”But under no possible set of circumstances can it even theoretically “perform the sh*t out of C”.”
I’m sorry but it actually can. Of course, in most real world situations C/C++ is on average still a factor of ~2 faster than Java on pure number crunching. But since you were talking about a theoretical case, I’m afraid you are wrong. Theoretically and with specific synthetic bench marks, Java can be faster than C or C++. The thing is simply that having runtime statistics can help immensely.
Consider the case where we have a simple branch in code. In C this is statically compiled to x86 machine code so that the true case is the fast path and the false case the slow path. Now imagine that at runtime it appears that 99% of the cases concern the false case. The JIT compiler can now generate the exact same x86 machine code that the static C compiler did, but do this in such a way that the false case is the fast path and the true case the slow path. If the code is very dependent on this particular branch, then it will speed up the algorithm immensely.
Of course, C/C++ can be run on a JIT too, or one could use a native recompiler like dynamo. So this is more an issue of exploiting runtime data for compilation than an issue of C vs Java.
May 20th, 2008 at 5:43 am
Pfff… Only a Qwerty typist would make such a mistake. Switch to Dvorak layout, dude.
Eddy.
May 20th, 2008 at 7:52 am
[...] http://www.bileblog.org/2008/05/java-hat…; [...]
May 20th, 2008 at 10:09 am
Oh my, Hani got his feelings hurt because someone told him he was a fucking idiot and a shitty developer.
The irony here is so thick I’ll need an acetylene torch to cut through it.
All computer languages suck. Some computer languages are useful.
May 20th, 2008 at 10:19 am
[...] the chickens have come home to roost, I [...]
May 20th, 2008 at 10:30 am
@Larry:
To quote Zora before she tried to kill Deckard in her dressing room in the movie The Blade Runner: “Are you for real?”.
May 20th, 2008 at 6:10 pm
@arjan
Thanks, that’s interesting. Can you tell me where I can read more about this? I only know a little but of (mips) assembler but I don’t see how, when we have a branch in the code, the compiler can necessarily make one branch faster or slower … (well, maybe one extra cycle - but that’s negligible).
You may be right (compiler optimization is so far out of my realm that I’m not really confident of much), so would you mind telling me where I can go learn more?
May 21st, 2008 at 2:08 am
Simple: because we had to work with it.
May 21st, 2008 at 2:16 am
I *totally* agree. Ruby is just *so* hard to learn, like you said, that even a genius like yourself will have hard time learning it, so it is bad.
Java is soooooo great compared to Ruby or the other ‘obscure’ languages you dont even mention.
And yeah, those other developers suck and have flaccid penises, not you, noo, you are so full of steel you spend your time writing blogs on how other peoples choices are bad. Bravo!
You are probably a genius lisp-coder, too - an lisp authority in your own right. Oh and yeah, lisp and ruby are both *soooo* hard to learn even an arts major like myself had to spend weeks learning them.
Why dont you just cut ‘le cráppe’ and get right to the point, and blog about how clever, intelligent and masterful javaist you are??!?! And hey, please see my portfolio, made with that other non-java-language.
Casimir
May 21st, 2008 at 10:48 am
Just look at all these insecure fanboys coming here, trying to fight back.
May 21st, 2008 at 3:36 pm
This picture pretty much sums up this entire blog.
http://www.penny-arcade.com/images/2004/20040319h.jpg
May 22nd, 2008 at 5:54 pm
I don’t know why you didn’t mention .Net - that’s the real threat.
May 23rd, 2008 at 6:48 am
I want to apologize to the whole have community for the stupid posts I recently posted on theserverside.com on 23/mars. I promise I won’t ever drink at work again.
May 23rd, 2008 at 11:01 am
> Shaneal,
>> I’ve rattled off half a dozen features that Common Lisp has that Java doesn’t: I challenge you to name 3 that Java has that CL doesn’t.
>Well, I can’t think of any feature that Java has that Ada doesn’t, so Common Lisp is in good company.
I can name one thing Java has that neither Ada nor Common Lisp have: users.
May 24th, 2008 at 10:23 pm
This guy is really unhuman and disgusting. There is no relation between autism and mongolism, and in both cases there is no human hand involved in causing either. Even in rich countries, the ratio is the same as very poor countries. Maybe he should give birth to one (like me) until he ‘diverts his course’.
As for the content, I tried to understand it but I really doubt there is any objective, just bad words that could only be heard from a non-autistic, non-mongol self-haters like this guy.
May 25th, 2008 at 4:24 pm
This is the worst blog entry I’ve come across in a while. Hani, until you learn how to respect other people and that little art of discretion when choosing your words, go back into that hole you were hiding in. Honestly, do you even know any English other than swearing? Can’t you make a point without being offensive?
May 26th, 2008 at 7:13 am
Ah, you kids with your Java.
C++ has been the victim of pathological hatred for longer than Java and a lot of that has come from Java types.
The language’s usage (which is the most important measure) has been shrinking too, which is probably a good thing. But for anything that has to touch the metal and where code performance really matters C++ is still dominant. When there is an AAA game title, Photoshop killer or non-text manipulating or text based successful desktop app not written in C++ that might be the beginning of the end but we’re still waiting.
May 27th, 2008 at 8:33 am
@Ehab
this is the bilebog, not the “not-be-so-offensive” blog.
You must be one of those silly guys that never read the title page, introduction or back-cover of books, and then complain about the content.
May 27th, 2008 at 9:06 am
C++? What’s that? You must be 95 years old.
May 28th, 2008 at 10:11 am
I used to code in x86 assembly.
I made a living as a C/C++ coder. And Java came long.
I was around when the big C++ vs Java debate started.
The C++ guys were just jealous that Java made it so much
easier to write an app. Guess what I did? I learned Java
and never looked back. Yes, I’m still comfortable writing
C++ and still do it occasionally when needed.
Now we have Java vs dynamic lang group. The nature
of this war is a little different from the previous. Java
folks seem to be harassed by the people Hani described.
I think the reason is simple. They are jealous of the VM
and system API. Hotspot is so good, and the system API
is so rich. They know the VM is flexible at the bytecode
level, so they wanna overlay their language/syntax on
top of the VM and the system API: have the cake and
eat it.
Really a bunch of shameless robbers. The fact that they
are harassing Java ppl is the ultimate compliment to the
Java platform (notice I didn’t say language).
May 28th, 2008 at 10:13 am
crikey….all that anger! One suspects it has been building up inside you for a while. You might consider something more worthwhile to get so passionate about rather than your insular, narcissistic rant about so-called ‘Java haters’ - one thing worth mentioning might be that the English language seems to have taken over across the board in all programming languages….
Mind, better out than in, the Psychoanalysts tell us…although such a populist and unhealthy belief in all things Oedipal may be a contributing factor as to why the world is in such a sorry state today….’go out and get a job’ !! - your philosophy is blindingly simplistic, darling….perhaps you might want to expand your reading list to include other works in addition to your anal Java manuals…..
…then again, maybe not - (you wouldn’t understand…) ;)
May 28th, 2008 at 5:13 pm
That has got to be the best opening paragraph ever.
May 30th, 2008 at 9:42 am
Hani,
Can’t believe that is you. And I was planning to buy your book (which I will, anyway). Java has problems and you simply can’t get away with that fact.
You deserve to read this: http://www.clintonbegin.com/2008/05/re-java-haters-gtfo.html
Shantanu
May 30th, 2008 at 1:22 pm
Just STFU and add some more tools to your belt. I started looking around at these other languages so I could grow a bit and not wind up being that 65 year old programmer that everyone locks in a dark back room because all he does is sit there a mumble to himself about anything different than the way it “used to be”
Either start growing you’re hair out now and find a pair of flip flops and sweats or go learn something new for a change. It doesn’t mean you can’t go back if you want to…it never hurts to learn something new…
June 1st, 2008 at 1:10 pm
It is all great in theory to tell others to learn new things and to keep learning throughout the remainder of their lives. But in practical reality that is worthless advice for those who have worked hard learning new and
many varied things and yet have never been paid for it, never been given a paid job, and are forced to live
on savings for the rest of their lives, and their savings will last only a year or two.
I agree that one should not complain about computer language or platform X if it’s not the right tool for one’s job
if there exists another computer language or platform Y that does the job.
However, what if there exists no computer language that can do the job?
I am working on writing an application in which a user can enter SMILES notation for chemical reactions.
I want the program to compute the equilibria concentrations of each species.
So far, no computer language can do the job. Maple, by MapleSoft, has come closest.
I can compute individual answers. I am forced to retype my equations each time I try a different
set of reactions. So, Maple is not ideal. But, it still have proven to be far more practical and useful
for MY purposes than Java or C++ or any form of OOP.
June 1st, 2008 at 1:20 pm
By the way, I have spent more than a year, trying to do Java “properly”: from the foundations up,
following all the advice and accumulated wisdom and experience from a close friend and Java expert.
And, yet - still after working on these fundamentals -
I cannot open past the first page. I am still staring at a blank screen.
I have no idea how to open a project and put the various .java files into it,
nor how to track down all the .java files and their dependencies.
I’d taken C++ 2 semesters in 2005 formally in school. I did well (2 A’s). I learned a lot from it.
Infinitely more than if I had just fumble and played around with it on my own.
I wrote small little routines outside of my class assignments shortly after the courses ended.
But, nothing ever went beyond that. Java has been even worse. I have “plateaued” - if you believe
in such a thing - at an even lower level for a longer period with Java than with C++.
I have no money to pay anyone to program for me. So, that is not an option for me.
One thing I hate about C++ - and Java - multiple filenames (extensions) are created and scattered
all over the place and multi dependencies scattered all over the place.
Again - yes - I should focus on a language which WILL do the job I want,
rather than complain about a language that won’t work for me.
That is why I have found MS Word and Mathtype the most useful language for conveying
mathematical, scientific and engineering ideas to the user. Perhaps I am being greedy
hoping for something more.
June 6th, 2008 at 7:46 pm
@resolvent, it sounds like you are after an existing software package then creating your own. C++ or Java should be able to solve your problem.
June 17th, 2008 at 11:57 pm
Hilarious, and even funny. I needed a laugh, I’m a busy grownup and don’t have time to laugh at whatever lameass tv show nerds watch these days. Bah humbug.
Yes I like java too, but mobile java is pissing me off… I think the API is only a suggestion… With every birth the babies have new flippers in different places…
Still, yes your points about the worthlessness of many other technologies is true and well said. I like your blog but will let the others offer to have your dyslexic autism babies.
June 20th, 2008 at 10:30 am
“(because of dynamic typing), which results in better maintainable code”
MUUUAAAAAAHAHAHAHAHAHAHAHAHAHA, you have GOT to be kidding me!?!?!
Maybe, just maybe, an argument can be made that it’s faster to develop in dynamically typed languages. But to claim better maintainability is FUCKING INSANE!!!
June 29th, 2008 at 11:29 am
As opposed to Java weenies that wank themselves over the latest acronyms on the market.
JPBLAH is the latest enterprise methodology to incentivise your productivity. OMG I JUST CAME!!!11!!
Java is shit. It is slow, cumbersome, large and stupid. It died on the desktop, and is barely just alive on the web (PHP destroys everyone there). But Java devs live in their own world, where every single one of them is apparently programming mission-critical-distributed-transaction-driven-enterprise system, or is a hotshot consultant making $300 an hour.
In reality, Java is used by replaceable code monkeys for whom Sun tailored the language. Java was created to sell shit that nobody needed. Hence the billion app servers, frameworks, random UML tools and methodology books targetted at the average Java developer. No sooner has someone released some over-engineered pile of Java shite, there are 600 page books published on how to use it.
If you Java jokers actually removed your lips from around Sun’s flaccid cock, you’d realise that there are problems with Java, and that for a lot of problems, far better alternatives exist.
July 7th, 2008 at 6:10 am
This whole place reeks of code religious fanatics. Sad. Really.
July 9th, 2008 at 7:59 pm
Thank you for giving me the opportunity to express my loathing for Java-based applications. I have nothing against the language itself, and I think Java is great on the server, but Java on the desktop is slow and it takes over my machine in a most unfriendly way. That’s all, that’s the only reason I loathe Java.
July 12th, 2008 at 10:30 pm
Refreshing. However without the invectives it would have been better.
Frankly I haven’t heard a single good objection against java except that it is not available on most shared web hosting and so not usable for smaller web sites.
Java applets got the wrong end of the stick due to negative press not due to lack of serious faults. Let’s see if JavaFx can do better.