Skip to main content

Has Java lost its way?

15 replies [Last post]
alexj33
Offline
Joined: 2008-09-09
Points: 0

Hello. I'm new to this forum.

I used to be a Java developer back in the late 90s. Java has always been a frustrating enigma for me. Allow me to explain.

Several times I've browsed in and out of the latest Java books and forums, and I cannot believe how *complex* it has all become. Quite simply, does there have to be a new API and a new 3rd party framework for every little thing a developer wants to do?

My understanding is that Java was meant to take the complexity out of previous development platforms, yet in my eyes it has become exactly what it was meant to replace, albeit in different ways.

Who can keep up with this dizzying array of acronyms and libraries? Who has the time to? Is it even worth it to do so? Who has time to research the frameworks to find out even what is worthwhile to invest more time in?

My feelings are that developer expertise is diluted every time a new framework comes out- especially a framework that addresses a need that has already been addressed. Does Sun even understand how overwhelmed people must be when they try to do anything with Java either for the first time or after not having been a java developer for a long time? Java is often a convoluted mass of acronyms and version numbers that needs to be swam through by every poor soul.

OK, rant over. Now onto the real question. My question to you all is threefold:

1. What do you think the original purpose of Java was?
2. Is Java on the right path today? Can it continue in its current direction?
3. Is Java itself embracing or alienating the developer community?

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
pascalfringe
Offline
Joined: 2010-11-22
Points: 0

Agreed Java is old but
1 Java was probably created to allow development, platform independent and more feasibility
2 Yes, Its still used in almost every big / small companies around the world. It does needs to improve a lot, APIs etc are very old now, probabaly needs to improve on execution speed.
3 Languages like Perl / Python have started taking over the word of mouth among youth. Java needs to create awareness.

--------------------------------------------------------------------------------------------------
Reliable Web Hosting India

drlaszlojamf
Offline
Joined: 2003-08-29
Points: 0

> With tongue in cheek may I suggest ancient Greek pottery?

Recent discoveries have turns the world of classical Greek pottery upside down. The field is also littered with acronyms by the way. Even the word acro-nym has Greek roots!

forinti
Offline
Joined: 2004-09-09
Points: 0

It's not Java's fault. It's some programmers with baroque dispositions. I've seen web apps with more frameworks than pages. I like the Java in my applications to be as simple as possible, and all my SQL to be in procedures (this way other systems can use the procedures and then you have real reuse).

bharathch
Offline
Joined: 2004-02-16
Points: 0

alexj33, it doesn't matter what you or I believe as developers. The language experts, theorists supreme and the guardians of Java will tell you what's good for you. They'lI tell you that Java will become obsolete if it doesn't "catch up" with other functional programming languages or doesn't get more "expressive and concise" like morse code by biting a silver bullet called BGGA closures. The gods have spoken. Comply or be left behind, mortal. :-)

mthornton
Offline
Joined: 2003-06-10
Points: 0

> for you. They'lI tell you that Java will become
> obsolete if it doesn't "catch up" with other
They are at least partly right --- languages that eschew change do slowly disappear from sight. That doesn't mean that we should add every feature being suggested.

bharathch
Offline
Joined: 2004-02-16
Points: 0

> They are at least partly right --- languages that
> eschew change do slowly disappear from sight.

Thats of course true - in fact Java probably wouldn't have thrived as much as it has, if it had been stagnant since the 1.1 days. I'm not against evolving the language in a manner that does not violate the basic design principles of the language. However, saying "me too" and blindly adding language features (e.g. functional programming constructs being added at the cost of the type system's simplicity) to emulate other languages is a definite recipe for disaster. Any such big-bang change made to the language at this stage should be preceded by sufficient debate of the pros & cons, and accompanied by careful thought & pragmatism.

kordzik
Offline
Joined: 2008-09-19
Points: 0

> > They are at least partly right --- languages that
> > eschew change do slowly disappear from sight.
>
> Thats of course true - in fact Java probably wouldn't
> have thrived as much as it has, if it had been
> stagnant since the 1.1 days. I'm not against evolving
> the language in a manner that does not violate the
> basic design principles of the language. However,
> saying "me too" and blindly adding language features
> (e.g. functional programming constructs being added
> at the cost of the type system's simplicity) to
> emulate other languages is a definite recipe for
> disaster. Any such big-bang change made to the
> language at this stage should be preceded by
> sufficient debate of the pros & cons, and accompanied
> by careful thought & pragmatism.

Well, isn't it what's actually happening in Java, at least to some significant extent? As I understand, you have the closures idea on your mind in the first place, when you're speaking of the 'me2' attitude. Well, you don't see everybody in the community being overly enthusiastic about the BGGA proposal. In fact, there is a vivid discussion among 'the gods' themselves (like Gafter vs. Bloch), and chances are, we're not gonna see closures before Java 8 (if we're ever gonna see Java8 in the first place - hopefully we will:). As I look at what is to come in Java7 (e.g. http://www.infoq.com/interviews/gafter-closures-language-features-option... ), I don't see anything controversial or 'me-too-isch' besides closures, which, as already said, are discussed over and over again and might not hit 7 at all. I think this is a good example that Java's direction is actually very much dependent on the community, especially if you compare it to other languages and platforms.

Message was edited by: kordzik

jwenting
Offline
Joined: 2003-12-02
Points: 0

They'll push function pointers (aka "closures") into 7 no matter what.
Nested packages may sound nice to some, but can quickly become a nightmare for maintainability.
Modular stuff is useless to pretty much anyone except a few people deploying applets to people on dialup connections.
Making Java dynamically typed (which he also talks about) is of course pure insanity and clearly a Me2 feature, mimmicking Ruby and Python.
The "properties" stuff is a Me2 feature mimmicking C# (it might have some merit to some people, but none of the proposals I've seen for it are better than extremely convoluted and ugly, clearly trying to shove it in no matter what the consequences).

Myself, I'm already sticking with 1.5 because 6 is a disaster when it comes to the stability of the server JVM (which is the only one I care about) and the embedded database engine and webserver are abominations.
With 7 looking to be even worse, and 8 no doubt worse still, Sun is rapidly digging a very deep pit to burry Java in and fill it up with all the garbage they've collected over the years.

linuxhippy
Offline
Joined: 2004-01-07
Points: 0

> Myself, I'm already sticking with 1.5 because 6 is a
> disaster when it comes to the stability of the server
> JVM (which is the only one I care about) and the
> embedded database engine and webserver are
> abominations.
> With 7 looking to be even worse, and 8 no doubt worse
> still, Sun is rapidly digging a very deep pit to
> burry Java in and fill it up with all the garbage
> they've collected over the years.

I can't help but for us, the server runtimes delivered with JDK6 are the best released ever.
They are rock-solid (at least here), having seen only a single runtime-related crash for about 6 months in the whole cluster, running 8-way operaton nodes with Linux and the CMS collector - and throughput improved quite a bit between java-5 and java-6 (about 5% for our workload).

- Clemens

jwenting
Offline
Joined: 2003-12-02
Points: 0

Java has in part lost its way. That's however not because of all the frameworks (it's after all not Sun putting out a new web framework every day for example...) but because Sun's become convinced that the "Me2!!!!!" approach to platform design is the best one.
By which I mean that they're trying to make Java do everything any other language or platform does, and have every language construct ever imagined for any other language.
Function pointers are just the latest, 1.6 saw a full http server and web service stack as part of the core language.
The inclusion of templated code ("generics") in 1.5 was another example, albeit one that has merit.
1.4 saw things like xml parsers (which for 1.7 are or were planned to be expanded to change the language syntax itself to xml).

grahamm
Offline
Joined: 2003-06-10
Points: 0

My opinion is that Java has not lost it's way but has out grown itself due to it's success.

Java is used in many different environments and applications due to the wide breadth of APIs available. However in the early days a developer could quite easily learn thoroughly a handful APIs. Nowadays there are so many ranging across many areas (rich client, server side, mobile, embedded, gaming, etc) that developers have to specialise.

This is clearly stretching and pulling the community in different and at times opposing directions. This could be bad for Java as each stream goes it's own way. Likewise, it may be better for each stream to focus on it's goals instead of burdening all of Java, so damaging it for everyone in the long run.

Personally I'm not sure if I agree with all of the language changes suggested for Java 7. What I would rather see is a focus towards new and advanced tools; higher level APIs to sit over the top of the low level API that exist and increased scaling and distributedness.

Graham

cehlen
Offline
Joined: 2004-09-24
Points: 0

> Quite simply, does there
> have to be a new API and a new 3rd party framework
> for every little thing a developer wants to do?

The APIs, provided by the Java platform, make our lives so much easier. Try to imagine a world without JDBC where you have to code against different APIs to work with Oracle, MySQL, and SQL Server. This same analogy can be applied to most all APIs provided by the Java platform i.e. JAX-WS, JAXB, JPA, and so on.

As far as 3rd party frameworks what can you do? Any successful programming language will spawn external projects, some will succeed and others will fail. I think one of the strengths of the Java platform is its active developer community. Many of the 3rd party frameworks have actually helped sculpt the Java platform to meet the needs of today’s developers i.e. Struts.

> Who can keep up with this dizzying array of acronyms
> and libraries? Who has the time to? Is it even worth
> it to do so? Who has time to research the frameworks
> to find out even what is worthwhile to invest more
> time in?

I work with people who have in their career actually had to use punch cards to write programs. The point is we work in the fastest changing industry in the history of mankind. If you are looking for something that does not change much you might want to consider a different career path. With tong in cheek may I suggest ancient Greek pottery?

> 1. What do you think the original purpose of Java
> was?
Write ounce run any where.

> 2. Is Java on the right path today? Can it continue
> in its current direction?
Yes and yes.

> 3. Is Java itself embracing or alienating the
> developer community?
I believe the Java Community Process and the growing number of open java projects shows how it is embracing the developer community.

cowwoc
Offline
Joined: 2003-08-24
Points: 0

> > Quite simply, does there
> > have to be a new API and a new 3rd party framework
> > for every little thing a developer wants to do?
>
> The APIs, provided by the Java platform, make our
> lives so much easier. Try to imagine a world without
> JDBC where you have to code against different APIs to
> work with Oracle, MySQL, and SQL Server. This same
> analogy can be applied to most all APIs provided by
> the Java platform i.e. JAX-WS, JAXB, JPA, and so on.

That's very much debatable. I agree that JDBC was a great addition simply because:

1) It integrated an established technology
2) That technology had no competitors (there were no 20 different JDBC variants)

Although it should have probably shipped in an optional module for JavaSE and required for JavaEE.

I don't think you can say the same about other technologies that have recently been integrated. I have two problems with integrating technologies that:

1) Are not established and "well understood". That is, technologies that have been around for a while.

2) Have many variants with no clear winner and there is a noticeable difference between the variants. For example, integrating JSP as "the standard" is somewhat counterproductive because many people we moved past it very quickly on to newer, better alternatives.

3) Aren't used by the vast majority of users. JavaSE, for example, is full of technologies that will never be used by the majority of users. These belong in optional add-ons that should be deployed on-demand.

tarbo
Offline
Joined: 2006-12-18
Points: 0

Welcome around.

I feel your pain but I don't really share your opinion. The frustration you describe is something more akin to IT in general than Java alone. Someone new to IT will marvel at such acronyms and abbrevations as SQL, CRUD, SSL, DBMS, FTP, whatnot.

I've been working with Java for a little over 8 years now, and there's a great many things I know next to nothing about. Spring, Hibernate, stuff that's apparently considered basic to Java is remote to me. But that's okay; if and when I need such functionality, I ask around a little, see what other people with more experience in that field can advise me. And then I either pick it up or go another way. It's the same with all of IT.

But on to your questions.

1) To get rid of #ifdef .
2) That sort of depends on the definition of "Java". Java is the language [i]pûr sang[/i] to me. In that sense, yes, it is on the right path, though I'm a little hesitant around closures or--more specifically--how these will be implemented. Java as the IT platform, combined with all the frameworks and libraries, has the same pains as any platform: many additions are either very useful to very few, or kinda useful to many. With notable exceptions.
3) Don't really know. I find the introduction of concepts such as (transient) generics helpful. Others find them unreadable garbage. Either way, everyone cares.

Cheers,
Jonathan

alexj33
Offline
Joined: 2008-09-09
Points: 0

> 1) To get rid of #ifdef .

HAHAHAHA, LOL. I laughed for a long time when I read #1 from your post! :-)