Does really Java sucks?

Hi, how are you?…I hope you be ok!

Ok. Days ago I was reading comparisons about web frameworks that I would like to use. Because (as a Java fan) I admit that most of Java frameworks are not productive enough to take short-time projects. So, I found this entry written in 2007 by the member of Ruby community Obie Fernandez. I know is too much ago when written from now, but, all I want is to extend and discuss some of his points.

1) Java has a compiler

Ruby does not. That’s great! Fuck compilers and their false sense of security. Too often is bad code checked in or even deployed to production, simply because it compiled. No such luxury in the Ruby world.

Well, first of all this is an argument of the well-known scripting vs compiled. This is not a good point to say why do [insert language here] suck ass. If this is a good point, then I can say: “C/C++ sucks”. I guess you can’t say if a language is great because has or not a compiler.

Having a compiler comes with advantages and disadvantages, for example, a compiler helps you to find bad coded lines, and in most of cases compiled languages are faster than scripting ones. But having a compiler you need to compile all the time to check your application: “Change the button, compile!”, “Put the menu green, compile!”, “Those option in a menu, compile!”, one and over and over again.

Scripting. The problem I found with scripting languages is that comsumes more ram when you’re developing, and if you read tutorials of Python, Ruby or any scripting language, many of them [the tutorials] comes with quotations like: “This language is not good when you need the best performance.”.

2) Java framework authors are not application developers

Prime example: the JBoss guys, who are paid handsomely to work on framework code all day. Sure, they’re exposed to real application development, but they don’t do it themselves. As a result, none of their handiwork is extracted from actual working codebases. Which is a shame, because if it were extracted from actual working codebases then it might actually not suck.

This is a point in where I disagree, first of all JBoss is not the only framework, how the author said [Obie Fernandez]: “…example…” you can check here in the playframework’s FAQ how the team developing Play! are a team of Java developers and we can say that play is a good framework of Java, and must to be another like that, but I don’t remember for now.

3) Most Java Programmers are Morons

This has to do with the number of people in the world that describe themselves as Java programmers and work at day jobs doing Java programming. What are there, like 2 million of them? More? So it’s just a numbers thing, really. There just aren’t that many good programmers overall in the world — and most them wouldn’t be caught dead doing Java.

Ok!, but when you’re learning Java is harder than learn Ruby, in deed every Java developer that learned Rails I know didn’t last not even 2 days to work with Ruby on Rails. Come on, Ruby on Rails doesn’t make you smart or better; not even because you are [insert language here] programmer means you are a moron. I could know 10 Java developers who are genius programmers, but I could know 20 Ruby developers who are average programmers or bad programmers. Doesn’t depends on language you’re using.

4) Java is too Fragmented

Java has a gazillion open-source frameworks and they all suck ass. So what do Java teams do to cope? Cobble those suck-ass frameworks together into custom layered homebrews that are nothing more than exponential explosions of sheer, despicable suck-assiness.

In stark contrast, in the Ruby world, we only have Rails. All Rails projects are structured the same way and follow the same conventions. That’s a good thing, since it means that Rails developers can move across projects with relative ease.

Well this is what we call variety, and if I don’t like Wicket I can take Struts2 or JBoss or Play or Spring MVC or anything I want, to be better at what matters: “To solve problems”. And in the ruby world you have merb too.
Another thing I don’t like so much is “all is in the same way”, because that way isn’t always the better way in every problem you can take.

5) Java is Too Slow

Ha. This is one of my favorite reasons, for the bloody irony of it. You see, Java isn’t actually slow. Everyone reading this knows that it got plenty fast over the last five years or so. Nevertheless, 90% of the world that knows of Java thinks that it is slow, because of its association with crappy slow Java applets and crappy slow Java loading screens on mobile devices.

Ruby *is* slow, compared to Java, and yet it is fast enough. Amazing, isn’t it.

Java is too slow?…well I don’t know how a Ruby developer dares to say: “Java is slow”. I’m going to make a proof, first with Java code:

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Main {
—-public static void main(String[] args) {
——–GregorianCalendar
———-gcc = new GregorianCalendar(),
———-gcc2 = new GregorianCalendar();
——–Date fecha = new Date();
——–System.out.println(fecha);
——–gcc.setTime(fecha);
——–int y = 0;
——–while(y <= 2000000)
—————-y += 1;
——–fecha = new Date();
——–gcc2.setTime(fecha);
——–System.out.println(fecha);
——–System.out.println("Y = " + y);
——–System.out.println(gcc.get(Calendar.MILLISECOND) – gcc2.get(Calendar.MILLISECOND));
—-}
}

Now the ruby code:

start = Time.new
puts start
y=0
(1..2000000).each { y+=1 }
puts
puts (Time.new – start) * 1000

Java result: 21 ms
Ruby result: 230ms

Final result: Java is at least 10x faster than ruby. *Note: using the operator ‘++’ in Java you gain another millis but ‘++’ operator doesn’t exists in Ruby*

6) Java doesn’t have blocks and closures

Do I really need to rehash this reason? No. I don’t think so.

This is the only point I can’t discuss, the blocks are missing in Java, that’s true. But ‘++’ is missing in Ruby.

7) Java has Integrated Development Environments (IDEs)

Closely related to Reason #3 Most Java Programmers are morons. Everyone knows that the best programmers use Vim and Emacs. Then come the TextMate users. If you need to use an IDE then you suck, period.

Well, back in the 80’s Vim and Emacs was used by programmers, now there are tools that make us more productive and this is not only in Java, there are IDEs for .NET, for Java, Plug-ins for PHP; in deed there are Ruby IDEs. If you think you’re better programmer because you use Emacs or Vi to develop, then I’m going to tell you: “What a programmer needs to be a good programmer is to solve troubles not to use a text editor to create application”.

8) Java has good debugging support

Java has great and powerful debugging (which is very necessary since most Java code sucks so much ass). Ruby has ridiculously pitiful debugging support, which means our code actually needs to be well-tested and readable.

Ok!, if we take: “Bad debugging support, better language”, then why don’t we use assembler?

9) Java Makes a Lot of Money for Vendors

This is potentially the most subtle of all of the reasons on the list. Basically, the integrity of most anything having to do with Java is corrupted by the way that it is inextricably linked to a web of intrigue involving money, big vendors and bullshit enterprise politics and pandering. Ruby doesn’t make major money for anyone except Pragmatic Dave.

What if Java gives beneficts for vendors?, Ruby makes a lot of money for Macromates and the Pragmatics…for much more could be, we don’t know. If that makes of Java a bad language, I need to tell you (to Obie) external providers to complement your work environment are a great thing, because if you don’t like the way the native way you can get an alternative way, depends on the provider if is politic and/or pandering.

10) Java does not have DHH

In the words of my inimitable friend Zed Shaw, “If DHH ain’t doing it, you don’t fucking do it. (Seems every time some clever fellow gets into trouble it’s because of that.)”

Who does Java have? Jimmy Gosling? Hahahahahahahaha…

Well I don’t know why to depend in a person, when you can depend on a community =). In Java there are many communities, are many frameworks are many things where you can get help in many languages. A person is just a person, a team is more than a person =)…”Two heads better than one”.

Well this is all for now,

Comments accepted.

Anuncios

5 comentarios en “Does really Java sucks?

  1. Ernest dijo:

    Hey there,

    I think it is obvious + the author already stated that many parts of his biased comparison were meant humorous. So do not attempt to take something serious, which actually cannot not be.

    Ontopic : I am dabbling around with JBoss Seam and while I think these guys did a good job in trying to connect the different J2EE technologies my impression is that Hibernate or JPA and JSF actually offer to many choices of possible solutions for a problem + at the same time make it over complicated. Moreover and maybe because of the latter reason the documentation for JSF really sucks. You got redundant libs, which are supposed to do the same jobs but only some of them work at all in combination. So I often wasted a few hours in trying to get something to work and later switching to another JSF-lib, because the former did not work. So why the hell it is available, when it is not working in the majority of cases ? These setbacks would not be that bugging if java was a dynamic language and your app would not have to be deployed after every little change in the backend. Yeah there are tools like JRebel which initiate hot deploys after every change, but this one is commercial and I’ve not come across OS-solutions. In the most of the J2EE stack it is all free software but sometimes I think it would be wiser to invest a little money at the beginning than wasting a lot of time on tiny problems, because the documentation and supports sucks. … just a few points, I don’t know whether the RoR-guys came up with a solution for their scalability-issues, but if my recent workflow stays the same in the near future I ‘ ll certainly change the framework for the next projects.

    Greetz

    1. ummestesimon dijo:

      Hi Ernest, Thanks for visiting!.

      Well, yes it was “a little joke”. But I guess we must to respect the work that other people did. But in the other hand we got an unproductive language (Java, being my favorite language I accept it) with the most of its frameworks fully unproductive, untill I found Play!, is a very good framework which makes Java a real productive language, I recommend you to try it. Play! it’s pretty fast (performance and development ways). I’m a rubyist, but when I saw Play! for the very firts tiem I just had to recognize the good job in it. Don’t waste your time configuring, coding, compiling, deploy…..play! is use java like another scripting language.

      Greets.

  2. asdf dijo:

    You really proved Obie’s point about how Java devs suck. Let me guess your knowledge of programming and language begins and ends with Java?

    ++ is nothing like the power that blocks and real closures give you. Most Java devs don’t understand advanced language constructs like those because they are still on the Java training wheels. Inner classes are not a valid replacement for closures.

    You need to re-read the Java is too slow comment, or maybe just read it for the first time. The point flew way over your head. Hint: it was a joke.

    You completely missed the IDE point. Java devs need an IDE to manage the bloated language that is Java. Even if you are writing a large Ruby app, an IDE is not necessary. Think about that: an external program is necessary to effectively use a programming language. That is sick.

    Learn about programming in general and then come back to Ruby.

    1. ummestesimon dijo:

      Hi! asdf. Thanks for your visit.

      First of all, ++ is nothing like closures or blocks, that’s true. But it was a joke =) (a java developer cannot have some humor?)

      The IDE point. Well I tell you as a Java Developer I hate IDEs. In fact I don’t use Eclipse or Netbeans, but IntelliJIDEA. Why?, Because is almost as use a text editor (like GEdit) and you got the power of just clicking ‘Play’ to run a process. But the IDE is completely optional.

      Have you listened about Play framework?. You should to checkt to know what am I talking about.

      About your comment: “Learn about programming in general and then come back to Ruby”. Please, Ruby is not a language which you need to be a “pro”, and I already know about “general programming”.

      To end this comment I want to share you how I started in programming world. First I learned Pascal (like 7 years ago), then I learned C, after that C++, then Java, all these languages I learned it was because of the school (high school). Then I got a job (about 4 years ago) where the language was Visual Basic 6 (maintenance of some apps), after that I started the college, where I learned C#, and by my own I learned Python and Ruby.
      So, Your: Let me guess your knowledge of programming and language begins and ends with Java? is not right =).

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s