The Joel on Software Discussion Group (CLOSED)

A place to discuss Joel on Software. Now closed.

This community works best when people use their real names. Please register for a free account.

Other Groups:
Joel on Software
Business of Software
Design of Software (CLOSED)
.NET Questions (CLOSED)
TechInterview.org
CityDesk
FogBugz
Fog Creek Copilot


The Old Forum


Your hosts:
Albert D. Kallal
Li-Fan Chen
Stephen Jones

Why does Java get such a hard time?

I've never had any issues with it personally. While the language may have it's flaws it does get the job done. I suspect a lot of the gripes around Java may well be coming from poorly designed apps. GUI applications with everything running off one thread come to mind. Thoughts?

Thursday, January 22, 2009
 
 
Two words:  Architecture Astronauts.  The people who make six levels of classes when one or two would suffice to be "enterprisey".

Personally I like Java, and although it might make me a masochist I find it more expressive than C#, although C# has some really good features that I like as well.  IMO Java's biggest benefit is that it's cross-platform, unlike C# which (despite the admirable advances with Mono) is still largely Windows-only.  I have to admit though I'm scared of the huge amounts of XML and configuration required for Java EE.

If there were Java jobs in my area I would gladly switch to Java instead of C# and rid myself of Microsoft (not for any fanboyism, just because I like and am enthralled by open source software).
WayneM. Send private email
Thursday, January 22, 2009
 
 
Java is verbose and most GUI stuffs are sluggish.

Plus Java developers are trained to believe that *everything* should belong to an OO methodology or to a design pattern. Which caused Allan Kay to rue having *coined the term OO programming*
Victor the Python Artist Send private email
Thursday, January 22, 2009
 
 
I'm not sure of the context in which it would get a hard time.

I do Perl/PHP/Python in web and sysadmin and I work with Java web (they either user awful shell or awful perl for command line tasks) folks. I've had to do a few jsp pages.

I find that the java folks are very tuned into their respective silos. I would not consider them developers in the Eric Sink definition.

In my experience, nearly all people who primarily define themselves as Java programmers, are slow (one actually used notepad for awhile), very slow, do not balk at time wasting activities, expect problems and do a very poor job of catching them, do not expect things to work properly, and take forever to do what should be simple.

A cohort from PHP had to do a lot of Java work. He found that on each jsp change he had to recompile everything. The other Java developer said he used that time to read the paper. Seriously. The PHP developer found a way to make changes which did not require a recompile. 

We had a Java "expert" who graced us with his presence and in 2 years could never get Ant to do their build. It would take them DAYS to get a change into production whereas it took us hours. The reason for taking us hours was we had to follow the bureaucracy. We had a system for promoting our code that took seconds from one env to the next. The Java "process" took DAYS never mind the bureacracy. They did things by HAND, seriously.

This is my experience with people who use Java. I have nothing against Java personally except it looks really verbose to me.  Currently the language I like the best is Python.
curdDeveloper
Thursday, January 22, 2009
 
 
curdDeveloper,
You're attributing deficiencies in java developers with deficiencies in java.

I can make a change to a jsp on my app and it doesn't require a build or restart. 

Someone can't run or write an ant script?  Ant is super simple.  It's basically just shell scripting via xml.

Java gets flak because it got super enterprisey and still is, though maybe not quite as much as it was 4 years ago.  J2EE was driven by huge consulting and sales companies like Oracle & BEA.  Is it in their best interest ($$$) to create a product that's super easy to install, setup, understand, and enhance?  Nope!  Enterprisey requires lots of consultants.  Enterprisey requires lots of extra hardware to run lots of extra software licenses.  Enterprisey == money.

Compare that to say Ruby on Rails, where the guy who wrote it wanted to minimize framework overhead above all else.
Synodontis
Thursday, January 22, 2009
 
 
There is nothing wrong with Java.  However it does have a reputation as being complicated and slow.  That reputation comes from a few areas:

- a long history of bad tooling, in particular IDE's written in Java
- an open source community which has created a rats nest of dependent tools and libraries which almost no one fully understands
- the "architecture astronaut" syndrome which led to "XML pipeline containers" and an almost antagonistic view of keeping things simple.
Sassy Send private email
Thursday, January 22, 2009
 
 
The language isn't too bad, but not being a late bound, dynamic language I find it hard to use it after using Objective-C as I end up having to write so much more code to do simple things.

The default APIs however are awful and bloated, partly due to bad design and partly due to language limitations (not being dynamic and late bound).
Martin Pilkington Send private email
Thursday, January 22, 2009
 
 
'The people who make six levels of classes when one or two would suffice to be "enterprisey".'

I was once engaged to "fix" a project that had gone off the rails and started counting the number of levels of classes between the JSP and what was actually happening when you clicked on the submit button for the form (making a request to another system via SOAP).

After *22* levels of interfaces, factories, connectors, configuration XML files I had almost lost the will the live.

No wonder the project wasn't completed by the original team - they had about 800 classes for something that was later rewritten to have far more functionality in about 50.
Arethuza
Thursday, January 22, 2009
 
 
>>The language isn't too bad, but not being a late bound, dynamic language

It is late bound, but not dynamically typed (see Kim Bruce "Foundation of Object Oriented Languages").

Personally, I don't see a lot Java-negativism these days, particularly not on this forum.  Usually the people who make negative comments either have mistaken ideas or confuse sub-par programmers with the language.

Generally, people seem to claim that Java is the next Cobol.  I propose these people have never coded Cobol.

The Java EE stack is dense and I agree with the observation it was a money maker for companies that pushed it.  But it also provided non trivial capability to do things like cluster sessions and really effectively partition code between presentation and logic.  People who have only worked on relatively small projects don't appreciate these things.

Seems like today the advance of Moores law and increase in network performance has rendered some of J2EE advantages irrelavent.

The two reasons I favor Java today are: 1) The wealth of opensource libraries and 2) cross platform.  I've listed the libraries I'm using in my project here before.  I haven't counted but I would estimate that in my project, I will write about 20,000 lines of code, but including all the libraries I'm using, I'm probably using a couple million lines of code.

This is a real productivety multiplier.  Of course this analogy breaks down if you start including the compiler, OS, drivers, etc...
Mark
Thursday, January 22, 2009
 
 
Some of the hating Java receives is due to the initial hype the language received in the mid- to late-90s.  Even 10 years later, people are unwilling to forgive Sun for promising that Java would be like the second coming of Christ.

Some of the hating is just people being snobs.  It's the Paul Graham school of thought, that all programmers who use Java are "Blub programmers" (i.e., mediocre).

Lastly, I think some of the hating has to do with the types of applications Java is typically used for.  When you hear Java, the words "sleek" and "sexy" don't normally come to mind.  Java is used to write a lot of boring applications, and due to its market penetration, is also used by a lot of boring programmers.

Java is an adequate choice for a lot of different types of programs.  It may not be chic (anymore), but it's still useful.
D.W. Send private email
Thursday, January 22, 2009
 
 
Let's see...

For those that don't remember 10+ years ago, Java was sold to us as solving absolutely everything.

The only place it eventually succeeded was in the enterprise, the one place where it is easiest to give up the "write once run anywhere" benefit of Java (really, how often do you change the server OS?).

It is now doing ok in the embedded market...just 10 years later.

It is horribly bloated with obtuse defaults for everything and it cultivates that style of development.  For example, for example, sending an email:

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipients(Message.RecipientType.TO, new InternetAddress[] { new InternetAddress(to) });
            message.setSubject(subject);
            message.setContent(body, "text/plain");
            Transport.send(message);

Really, message.setFrom doesn't take a String?  Why the hell not?  There are countless examples where I have to create an object from a string so I can make a method call.  While it may be good OO theory, the reality is that Java code gets filled with boilerplate.  If something is done the same way all the time, should that be abstracted out?  Well, it does get abstracted out, 10 different ways, and should we really have to abstract the base language?

Oh, and the language itself doesn't allow for modifications.  If you wanted to write a String2 class that behaved exactly as String does, you couldn't.

The whole "write once run anywhere" thing only means it will run on any similar level JVM...usually.

One last thing.  It is still slow.  Sure it can call some native libraries and do a decent job of that, but so can every other language out there.  So it's fast when it only covers the part of the program that isn't the bottleneck.  It is fast enough to be a decent prototyping language for something that I might want to be really fast in C/C++, but for stuff that I want fast it is worth dropping down that level and taking control most times.
Lance Hampton Send private email
Thursday, January 22, 2009
 
 
I would say Java on the desktop gets a well deserved hard time. Swing was a late comer and even today when Java is fairly quick it's difficult to construct a good looking UI without knowing about insets, borders and GridBagLayout.

On the server side I think Java is just great. You can remove most of the xml configurations by steering away from Spring and other frameworks. In fact, just using servlets and a templating engine like Velocity is a very nice setup. Using Tomcat also simplifies things quite a bit.
Jeff Hawkins
Thursday, January 22, 2009
 
 
It is a fairly bloated language.  Swing by Norvig.com and check out the spell checker article.  The java version is double the length of the C version and more than 10X the length of the original python version.  Sure there is a Java version that claims to be of a similar length to the python version but that is because the guy who wrote it just stripped new line characters.  Whereas all the other code is fairly readable and not hacked to be short.
Brian
Thursday, January 22, 2009
 
 
>> Two words:  Architecture Astronauts.  The people who make six levels of classes when one or two would suffice to be "enterprisey".

This thread could have stopped after WayneM's first paragraph there. Question asked - Question answered.

Just like the thread on VB not getting any respect - it's not the language that's the problem, it's the type of people it tends to attract.
January 22, 2009
Thursday, January 22, 2009
 
 
"I.. counted the number of levels of classes... After *22* levels of interfaces, factories, connectors, configuration XML files I had almost lost the will the live."
-- Arethuza

I've been there brother, I a contract at a top 500 and there was a ASP.NET C# app that had 11,000 files (no joke) and 17 layers from a webform to when the data was saved to the DB.

Even more shocking, all the app did was:
 - Basic CMS text editing (no formatting, tables, images, nothing!)
 - A survey maker
 - The ability to post iFrames to other sites/urls
 - The ability to apply a premade theme

I have no idea how it took them 2yrs to generate this atrocity amongst 3 developers but I've build more feature rich apps in a couple months in more RAD scenarios.

I didn't stay there long, it was career suicide, especially since the original core dev was still there and well loved by management.
TravisO Send private email
Thursday, January 22, 2009
 
 
I should point out that I don't think there is much in Java that encourages such tendencies to over-architecting things - it just seems to be part of Java culture since it went all Enterprish.

All a bit of a shame really - I *really* like Java when I started using it in early '95. Now I prefer C# and, increasingly, Javascript.
Arethuza Send private email
Thursday, January 22, 2009
 
 
That answer to every language war is "right tool for the right job".

Java gets a lot of crap because it's the right tool for an unpleasant job: CRUD programming for boring business apps.  It's the COBOL of the 21st centurey, not beause the languages have *anything* in common, but becuase the problem domain is the same.

Java, like COBOL before it, is the language used when "consulting" companies hire business majors to write code to improve business processes.  Could anything be more dull?  Less geeky?
Skorj
Thursday, January 22, 2009
 
 
It is not true that Java is only good for CRUD.

My company uses Java for financial modelling. *All* our code is written in Java, including the number crunching stuff. Sure, if we wrote it in C++ it would run faster. But:

- many times, it's not the numerics which is the bottleneck, but waiting for the data from the database to arrive
- (almost) all our code forms a single entity, we don't need to call a C++ library from the webpage written in something else
- if we really want speed, we've got a license for C numerical library accessible through JNI
- we don't spend time chasing buffer overflows, double free's and all that unmanaged memory zoo (been that, got the T-shirt)
- our builds run much faster than they would do in C++
- Java allows for much more modularization of the code, since I can build my JAR and give it to people for use (Maven!)
- Java developers are cheaper than C++ developers ;-)
- Java is *much* easier to debug than C++
quant dev Send private email
Thursday, January 22, 2009
 
 
As others have discussed better than myself, there are the incredible layer upon layer, especially in J2EE and the odious Enterprise Java Bean.

Another reason, and this was also discussed in the thread on VB gettin' no respect:

Java Schools and their marginal graduates, so we encounter many many "Java persons" who are not very good at all.

Happened to Forth as well.  It was picked up as a programming language by a lot of EEs and MEs back in the days when older engineers had no programming training.  Result: Horrible programs.  Smeared Forth's reputation forever.
What is this Web stuff, anyway
Thursday, January 22, 2009
 
 
Lots of people nailed it. If you're talking about J(2)EE specifically, then it's just so much work to get things done. There's a pretty high profile project where I work that's using lots of the latest buzzwords...EJB3 etc. but the bottom line is that it's taken them about six weeks to get to the stage where they can retrieve and display a record from a fucking database table!
John Topley Send private email
Thursday, January 22, 2009
 
 
People still think Java is slow.
Joe Send private email
Thursday, January 22, 2009
 
 
John,

Isn't EJB3 credited with being a lot simpler than previous incarnations?

Thursday, January 22, 2009
 
 
"Isn't EJB3 credited with being a lot simpler than previous incarnations?"

Yes, that's what they say. Give me Rails' ActiveRecord any day.
John Topley Send private email
Thursday, January 22, 2009
 
 
"Why does Java get such a hard time?"

Every school I've been at probably had to fight the administration just to get PHP or Perl in there,but  otherwise strictly Microsoft.

Even at DeVRY when I went it was 2 semesters C++(and not that C++.net stuff), VB, Perl, 2 semesters COBOL, and only one semester Java.

If you disparage the Java model, then aren't you really disparaging Smalltalk and OO in general.  "Oh, those Smalltalk schools!"
lorb
Thursday, January 22, 2009
 
 
I used the wrong quote, as that was in regard to java schools comment.

I suspect Java gets more close to the business domain, so you run into politics with it more.  Whereas you have a PHP app, where is the politics in that.  Who has the corner office and runs a lot of business deals because they are a master PHP programmer, ensconsed  into the company - probably not as typical a scenario.
lorb
Thursday, January 22, 2009
 
 
The other thing is that with Java, you are expected to love the existing code-base at a company, as it is the time-tested code that all want to rely on, even when it is overkill for your own code.

Scripting languages have that beauty of not needing to use others' code and whipping out a finished program before you go to lunch.  More exhilarating.

I like that objects encapsulate a lot of the logic and give it a name.  When I look at pure procedural code, it's like okay, this is a for loop, now where do expand this to get the large big-picture view of what the program is doing?
lorb
Thursday, January 22, 2009
 
 
With Java, yeah you have to learn/memorize a framework or what have you, and that takes time.

My only thing is I don't want to learn a fad.  I don't care if there is something slightly better out there, as long as what I am using is not a fad.  That, and I like that Java isn't as officially tied into an operating system version as much as .net is.
lorb
Thursday, January 22, 2009
 
 
Java encourages bad programming practices (or at least it did last I looked a couple of weeks ago). Therefore, people who know what they are doing try to stay away, and those who do find Java acceptable often try to abstract everything to small pieces that they can manage, but follow all the wrong practices the language offers them.

Case in point: Thread use -- many libraries have no way around blocking operations (e.g. NBIO was introduced in 1.4, but is not in common use). So it pushes users towards a one-thread-per-request model which is the non-scalable, hard to debug way to do it. Many Java programmers are not even aware that other options are possible. Using the synchronization primitives offered by Java is both hard, and makes many operations essentially serial and slow.

Case in point: Operating system interface. Do you want to know how much disk or memory free space there is ? You can't; because that can't be portably and reliably done. Now, this should only ever be used as an optimization -- the fact that enough space is available before you start an operation does not mean it will still be there when you try to allocate/use it. However, if the operating system can tell you there's no more than 1m free space when you know your operation needs 50m, you can be much more graceful. But not if you use Java...

The language has evolved into an o.k. language over the years (from abysmal), but the libraries and run time environment are just horrible.
Ori Berger Send private email
Thursday, January 22, 2009
 
 
"I work that's using lots of the latest buzzwords...EJB3 etc. but the bottom line is that it's taken them about six weeks to get to the stage where they can retrieve and display a record from a fucking database table! "

I have no love for Java myself, but to be fair, it's a new technology for them.
Fake Programmer
Thursday, January 22, 2009
 
 
>>Java encourages bad programming practices (or at least it did last I looked a couple of weeks ago). Therefore, people who know what they are doing try to stay away, and those who do find Java acceptable often try to abstract everything to small pieces that they can manage, but follow all the wrong practices the language offers them.

This purely opinion and anecdotal.  Dismissed.

>>Case in point: Thread use -- many libraries have no way around blocking operations (e.g. NBIO was introduced in 1.4, but is not in common use). So it pushes users towards a one-thread-per-request model which is the non-scalable, hard to debug way to do it. Many Java programmers are not even aware that other options are possible. Using the synchronization primitives offered by Java is both hard, and makes many operations essentially serial and slow.

Your conflating threading and io.  FYI, the socket library distinction between io/nio in Java is mirrored in Python, .net, winsock, etc...  it's the fundamental nature of the low level berkely socket implementations.  Java synchronization is mirrored in .net so, C/C++ has no synchronization primitive, so it's 'bad' because of existance, or just because 'I said so'?

>>Case in point: Operating system interface. Do you want to know how much disk or memory free space there is ? You can't; because that can't be portably and reliably done. Now, this should only ever be used as an optimization -- the fact that enough space is available before you start an operation does not mean it will still be there when you try to allocate/use it. However, if the operating system can tell you there's no more than 1m free space when you know your operation needs 50m, you can be much more graceful. But not if you use Java...

This is just weird.  Who does anything like this?

>>The language has evolved into an o.k. language over the years (from abysmal), but the libraries and run time environment are just horrible.

More opinion.  With 'criticism' like this (ignorant, uninformed) Java must be doing ok.
You are an idiot
Thursday, January 22, 2009
 
 
There are two types of languages, those that nobody likes and those that nobody uses.
Bart Park
Thursday, January 22, 2009
 
 
When I learned Java in my 2nd Univerisity year I instantly forgot C++ and/or C .
I had studied 1 year C and C++ (my first programming languages) and could never come to grips with the pointer to pointer to pointer ideas.

For me Java is just a language that can get you closer to your target as it can get you to implement things faster and thinking more in business domain than technical one.
That said .. yes it WAS slow and yes EJB 2.0 WAS bloated and over-engineering  was the name of the game until about 2005 (basic CRUD web applications that would use EJB 2.0 ENTITY beans come to mind).
With the development of Spring, Hibernate,EJB 3.0 ,JSF the development was greatly simplified.
Of course you can call yourself an architect and develop 22-25-infinity of layers but most project I worked on were pretty well structured - about 3-4 layers top.
When I started coding I did PHP .. that was quite a easy to learn and fun programming language ... my boss did not use an IDE to code and he was also a Perl master :).
Learning that Java needed compilation and and IDE drove him crazy.
Also comparing Apache to Tomcat in  terms of performance was clearly not good for Tomcat :).
I left that job not because of that but because other things such as "source control",specs or general coding that took more than 2 days  would not be considered useful by my boss.
I love PHP but with Java I ended up with about 40% raise :).
Mike L. Send private email
Friday, January 23, 2009
 
 
"The other thing is that with Java, you are expected to love the existing code-base at a company, as it is the time-tested code that all want to rely on"

How on Earth is that specific to Java? If you use C++, can you just ignore the existing codebase?

"Java encourages bad programming practices (or at least it did last I looked a couple of weeks ago). "

Maybe stop looking ;-)
quant dev Send private email
Friday, January 23, 2009
 
 
'How on Earth is that specific to Java?'

Compared to scripting language, in general, not to another OO language where you compile and then run.

Especially not compared to C or C++.  There it REALLY makes sense to leverage tested code (as compared to simply testing "your own" code).
lorb
Friday, January 23, 2009
 
 
I've stayed well away from Java, probably because I didn't really feel a need to use it when it first came out, and later on I fell for the backlash.

Anyway my main bugbears about Java have been:
1) A single corporation controlling the standard library. Yes, VB and C# do this as well, I know, but there's a get out clause with them because unlike Java, they don't have ....
2) A holier than thou attitude to the "write once, read everywhere" mantra that means calling down to platform specific code is frowned on from a great height, even when it's the right solution.
3) There doesn't seem to be anyone out there using Java for simple stuff with just your basic I/O and file manipulation. And don't tell me "real programmers" don't write programs like that - last time I looked you could write a compiler without accessing any more complicated APIs than the ones to read and write files.  And even an ASP.NET app doesn't have to use a huge object API, you can just implement IHttpHandler and keep it simple.

I suppose my litmus test on this is - can you get a job knowing just the Java language, what bits of the standard library are sort of analagous to C's stdio, and a reasonable grounding in software engineering practices? If not, why not?
Ritchie Swann Send private email
Friday, January 23, 2009
 
 
Java does have more apps than just on servers.

I have used several Java desktop applications recently that have been quite impressive.  I'm into role-playing games and GURPS.  The GURPS Character Sheet program and MapTool have been really useful, and they run on Linux, OS X and Windows.

Even with the newest Java 1.6 R11, startup time is slower than if they were C++ apps, but once they are running there's no speed difference I can see.
Jonathan Briggs Send private email
Friday, January 23, 2009
 
 
>> Your conflating threading and io.  FYI, the socket library distinction between io/nio in Java is mirrored in Python, .net, winsock, etc...  it's the fundamental nature of the low level berkely socket implementations.  Java synchronization is mirrored in .net so, C/C++ has no synchronization primitive, so it's 'bad' because of existance, or just because 'I said so'?

Thank you. This response is characteristic of a Java programmer, and actually proves my point. I mentioned NBIO, which stands for NON BLOCKING IO, which is important for high performance (lots of clients / efficient CPU use) systems. You are not even aware of what you are missing.

The java synchronization mention was about pushing programmers to do the wrong thing. It's not bad because it exists; it's bad because it's the one-and-only way to do a lot of things, and for high performance stuff, it sucks; but is used throughout all the Java interfaces, so that's the locking you have whether you like it or not. That's why it's bad -- C leaves the choice to you.

(The reason I hate Java is that it doesn't give you enough in return for forcing these things on to you -- compared to e.g. Python or Lisp)

> This is just weird.  Who does anything like this?

Programs that are usable and friendly? (This is from a production system I worked on when a disk size of 20GB was common, that generated potentially gigabytes of intermediate data, knew how much it is going to generate before spending hours to actually generate it, but would still crash if not enough disk space was available).

Granted, I last used Java in 2002 -- but I see no compelling reason to look at it again. The main things that put me off are still there.

> More opinion.  With 'criticism' like this (ignorant, uninformed) Java must be doing ok.

Java is doing okay. So does COBOL and so did VB. I was just explaining why *I* stay away from it. You're less informed than you think, and for being ignorant -- well, what can I say, I must be.
Ori Berger Send private email
Friday, January 23, 2009
 
 
So Java is slow? Care to post some benchmarks comparing Java to python, ruby, php, javascript, perl,...? In pretty much all of those languages once you call a routine that isn't implemented in C, your performance is impressively bad.  Now java was slow if you had to start up the VM. That only matter to desktop apps/applets.

Java suffers a lot form being the first of the alternative languages (to c or pascal) to come into mainstream usage. It definitely isn't perfect (some way to do method pointers would make event handlers a lot more compact, has a bunch of obsolete stuff (2+ data structure libraries), and just verbose to use libraries (how about a few wrapper to make the common cases easy)). It was also crippled by Suns inability to work with any one else for the longest period of time.

Friday, January 23, 2009
 
 
@lorb

"Compared to scripting language"

Oh well. And compared to oranges, chairs are better because you can sit on them.

@Ritchie Swann

"A holier than thou attitude to the "write once, read everywhere" mantra that means calling down to platform specific code is frowned on from a great height, even when it's the right solution."

Do you really write code thinking "OMG, what will the Sun execs think about this class"? I mean, JNI is shit, but it's there.
quant dev Send private email
Friday, January 23, 2009
 
 
From my personal experience, I started with Java during the 1.0 days (or should I call it 1.uh-oh?).

It was a half-baked POS, and I remember all of the "write once, run everywhere!" crap that Sun was shoving down everyone's throats at the time. Given all of the hype, it fell flat on its face.

The tools were crap (what tools?), lots of compatibility problems using JDK 1.0.0, 1.0.1 and 1.0.2. Then multiply that by the Netscape/IE browser wars, with every version supporting a different version of JDK (or at least it seemed like it at the time!).

I ran away from Java and web development screaming, and never looked back until I was forced to use Java 1.4.2 in a class for grad school. Although I was very hesitant, I actually liked it.

Personally, I strongly prefer C++/C# as my language of choice (mostly because of my work), but Java is just fine for a lot of applications and wouldn't mind using it again.
QADude Send private email
Friday, January 23, 2009
 
 
Not sure if it was Gosling that said that the main benefit of Java is "Learn once, work everywhere".

I wrote this a while ago about that idea:

"From my personal experience, that is quite true. I started programming in Java in 1997, and since then I have built web applications, database applications, mobile applications for Palm and Pocket PC, an application server for CTI applications, CORBA-based distributed applications, network management applications, server-side business components for application servers, fat-client business applications, an IDE, a Rich Client Platform, a modeling tool among other kinds of software. All that across different operating systems and using similar products by different vendors.

Of course I had to learn something new for each kind of "application style", but the programming language and core class library were always there for me. That is a huge thing. Before Java, it was really hard to move from one domain to another, or even move from vendor to vendor. Sun has my eternal gratitude for bringing some sanity to the software development industry."
Rafael Chaves Send private email
Saturday, January 24, 2009
 
 
Sure Java has its issues as well as other programming languages too... One day it sucks and the other day it sucks a little bit less.

The main benefit that I see in Java is being able to deploy an application directly to most platforms without any modification. Other languages will often require you to port at least some core parts of the application to a specific platform.

You can write, command line, desktop and web applications and deploy them "virtually" anywhere Java runs. Your users use the very same application under Windows, Mac, Linux, BSD, Solaris, etc.

Yes, Java isn't the solution to all problems and you wouldn't probably write a device driver in Java. The same applies to other programming languages(Concurrency issues, lack of libraries, only one platform target, etc.).

Would I write a really huge and non trivial application highly concurrent application in Python, ASP, Perl, Ruby or PHP, probably not anytime soon if I have the choice. For ASP, if one developer suggests it to me, I will fire him immediately.

I've seen developers who manage to write non cross platform Java applications without using JNI or command line programs, but that's a different issue.

If Java or C# are slow and verbose, then why not write machine code, seriously? I can probably write C or C++ code which would run slower than similar applications written by "poor" developers.

Compared to the benefits Java provides, it is fast enough. Sure the language has its design flaws and it's the same for other languages.
Eric Patterson Send private email
Saturday, January 24, 2009
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz