- Related Stories
-
Open-source LAMP a beacon to developers
June 14, 2005 -
Grassroots computing languages hit the big time
May 13, 2005 -
Is Java cooling off?
June 28, 2004
(continued from previous page)
In the last few years, there has been a lot of interest in LAMP (a Linux software combination) as a development stack, whereas as a few years ago people said there were two primary stacks: J2EE and Microsoft's .Net. Has LAMP become a viable option to what's offered in the Java world?
Gosling: LAMP has certainly become quite viable, and Java works perfectly well in the LAMP world of Linux, Apache and MySQL and PHP. Java actually fits into that mix pretty nicely and gets used in that mix pretty commonly.
In general, I'm philosophically quite a big fan of diversity in the marketplace?I actually personally don't feel a great sense of difference there.
It sounds like you're not necessarily concerned about the emergence of things like Ruby on Rails or more use of PHP or LAMP. These things are not explicitly Java, but it sounds like that's okay, from your point of view.
Gosling: I actually think they're cool. All these things do actually work together. Particularly when you look at some of the flavors of Ruby--like there's one called J/Ruby, which is an implementation of Ruby on the JVM (Java Virtual Machine). That's actually pretty spiffy; they get some very nice stuff there. My one wish with the scripting folks is that on average they aren't weird enough.
What do you mean?
Gosling: Well, if you look at many of them, they kind of look like Java programs.
Meaning that if they're going to be doing something different, they should really do something different from what's already there in Java?
Gosling: I mean it feels to me like there's enormous territory for people to do really innovative and interesting things, and it feels like people are just kind of scratching the surface.
Is Java going to remain a general-purpose language and platform, or is it time for it to specialize in mobile or in server stuff?
Gosling: There are number of paradoxes involved here. On the one hand, you get a lot of power by specializing. On the other hand, you actually get a lot of power by being general, by hooking things together, by having an environment that works on a lot of places, and that's been one of the areas that's been pretty powerful for us.
One of the flip sides of that is people tend to focus on the technologies. But if you focus on the skill sets of the developers, one of the things that's been really powerful in the Java community is that a developer can learn Java and then work on an app server, work on a transaction server, work on a piece of networking protocol, work on an app in a cell phone, work on an app that's controlling some piece of factory automation, work on an app that's in a smart card. You end up with a skill set that is extremely portable, not just a technology that's portable? It's funny when you talk to the CIOs, CTO crowd--that ends up being a really huge deal.
The Ruby on Rails people are excited about it because it's productive, whereas people will say Java just doesn't have the same productivity for Web development. Why are we still just waiting for that?
Gosling: I think a lot of people who are saying that haven't actually tried any of the high-end Java tools. They really need to sit down and try things like Java Studio Creator?One of the things that's interesting about this debate is that, by and large, the people whose vote gets counted by the press are the people who are the loudest.
The development world tends to have trends that people jump on. Do you want Java to be trendy?
Gosling: Well, eight or nine years ago, Java was trendy. It's gotten to where it sort of transcends trendy. It's really a funny thing, because Java isn't like a thing anymore, it's a whole bunch of different things.
You take things like J2EE (server software), it's become almost sort of the opposite of trendy, in the sense that it's totally mainstreamed, totally proven mission critical. It's very corporate, it has been really seriously battle tested, and for lots of folks it's become a completely safe bed.
It's one of these phased things. I think there are parts of the Java world that have become very trendy--and I don't mean trendy in the sense of the latest style of glitter jeans, I mean trendy in the sense of sort of popular and exciting. Certainly things like cell phone development and NetBeans and Creator and a lot of the tools and the different API stacks like the JAX-WS stuff, we consider all of those to be very trendy.
There are aspects of it that are just rock solid. They're dependable, and they've become as exciting as oxygen. It's there when you need it, and if it went away you would be really upset.
36 comments
Join the conversation! Add your comment (Log in or register)
It' a bit too positive for my tastes. I think it's just a lot easier for him to say that than to say "We haven't really taken good care of Java."
I like Java as a language & platform. Not everyone is into it. You have to admit, it is nice to be able to use one language across a pile of different uses. It's stable, and platform independant.
By platform independant, I don't mean .NET's blaitant lie. Java is available to run on a variety of operating systems and hardware.
I would really like it if they started to seriously go against C++ and C, It is such a cleaner, more straightforward language(especially compared to the mess that C++ has become) and does come with the hair-trigger shotgun that comes standard with C++, and too a lesser extent C. A solid native compilation, that performs well would go along way into digging into those two languages. Java is already pretty fast, I have seen it match well-written and well-compiled C++ code, so maintaining that speed and the cross-platform nature and being able to generate solid native code, would be a boon for Java. Of course, C and C++ are extremely good at being cross-platform(they just require multiple compilations, but sticking to standards and staying away from platform specific API's keeps your code easily crossplatform), of course C++ is lacking things like a standard networking and GUI library and it is in these places that Java can really compete on the desktop.
Believe what you will about java: It's still one of the most stable architectures around, very robust, completely extendable. Complex? Maybe to a script jockey or a .Net "programmer"...
some of its fundamental shortcomings. Some examples: Java's
combination of a funky type system and method overloading
makes reflection unnecessarily complicated, which in turn makes
dynamic functionality hard to implement. The lack of language
support for inheritance of class methods and constructors
makes it extraordinarily difficult to design extensible classes;
the resulting rigidity causes needless difficulties in reusing
components and frameworks.
Sadly, it seems that Java's designers have chosen to focus on
adding syntactic sugar in Java 1.5 (excuse me, 5.0), rather than
fixing things that are truly broken.
It is fairly simple to write, reusable and extensible components in Java, you just need to understand more then the basics of inheritance.
I didn't believed back then. Now it is fact.
When I see people struggling with Java on servers, I really feel
sad for them. People use expensive servers to do operations I
used to do on embedded $250 system. What'a joke.
This is 100% stupid idea: isolate people from platform.
Applications are not portable not because platforms are
"incompatible", but because they are "different". Users choose
platform by value it gives them. What sense it make to lock out
all advantages of platform by using Java? Java is not giving
people choice - but rather removes it from them.
But, it beats me, I guess word "choice" doesn't ring any bell in
Gosling's head...
Scripting languages giving you a greater choice. Most have very
liberal licenses - allowing you tune them for your particular
application. Java is [CENSORED] generic and abstract optimized
for everything in general and nothing in particular. And
controlled by Sun. Most of people caught in Java are people who
have bought Sun's promises for platform independence. But of
course Sun has lied: Java application are dependent - guessed
that? - on Java platform. (Try to port from Java 1.0 - 1.2 - 1.3 -
1.4 - 1.5, and add that 1.5 has different byte-code format.
What'a [CENSORED] [CENSORED] [CENSORED] m*rons Sun with
Gosling are.)
another platform - you have to have blessing of Sun.
Recall how this /geniuses/ simply revoked OpenBSD license.
(Jealous because OpenBSD runs better than Slowaris^WSolaris on
Sun's own hardware!?)
And Sun still gave no license for porting Java to 64bit Linux. And
Java is also unavalable on Linux/PPC{32,64}.
Thanks God Sun have no relation to Perl - it simply compiles and
runs on any hig-end/low-end/embedded-crap I'm throwing it
into.
Would you like to declare Java the Antichrist right away or should we wait a day or two?
Java fulfilled a very real and very serious problem for a very long time. In fact, it still could be an absolutely wonderful tool to bridge Linux distributions.
That being said... Please, tell us how you "really feel" about Java.
You do realize that you can hook into the underlying OS in Java don't you? You can use KDE libraries, windows libraries, whatever you want, even DirectX if you really wanted to. Of course you do, you aren't an ignorant ranter.
PHP is a faster/easier tool for most web (server side) development.
RealBASIC is a simpler/faster (client side) tool for cross platform Linux/Win/OSX GUI app development.
Perl is a more flexible general purpose and data manipulation tool.
RealBasic? PUH-PLEAAAASE It is a toy.
Perl is hideous and slow, but fantastic for data manipulation or gluing 2 real languages together. As for its flexibility, not even close to java. Perl's limits come much, much sooner then Java's.
Java is not the end-all be-all of languages, no language is, but it is extremely powerful and extensible.While it is not the best choice for everything, there really is nothing you can not do with it.
So if you do not understand OO, then at least admit it and do not try to take your frustration on Java :)
And, ZK is an example using Java in the markup language ( <a class="jive-link-external" href="http://zk1.sourceforge.net" target="_newWindow">http://zk1.sourceforge.net</a> )
My thinking is with all these languages and all this knowledge why can't we create a singular language that could be grown out of all the knowledge of other languages and systems? Oh, yeah. We don't live anywhere near perfect. My bad, I forgot.
Personally, I like Java. I don't care much for C++ or Perl. I have been learning PHP, Python, and Javascript. I think RealBasic is a fine language. I also have been trying to learn Assembly (why not). I also like Pascal. I don't really find anything wrong with any of those languages. Each has a strength and weakness. Each has a loyal group of followers. And each was created to fill a need and has, in one way or another, grown from there. Life is grand.
I think it's time we create a few more languages, only this time we try to make them do everything. They need to be fast, portable, scaleable, easy to learn, and they must work seamlessly on the web and desktop. Perfect. :)
How about the place of .net?
Not sure yet how one could trunp the other other then a codeing preference.
Sorry, biased view... .NET certainly has a place in today's world of Enterprise Architecture, even if it isn't my preference. Realistically, Sun and Microsoft have enough clout (and cash) to keep their development environments running.
On the more technical side, I like the OO implementation in Java more, and the options it gives me on the hardware and O/S side. There are enough open source engines (think JBOSS, Tomcat, and more) to choose from, loads of tools, support from the big players, such as Oracle, IBM, Sybase and the rest. You've even got Open Sourced Architectures Patterns, such as Struts and Tapestry.
.NET = Microsoft. Mono is an option, but until .Net is published as an open standard, Microsoft will pull all the strings here, and I have a problem with that.
As for complexity - Applications (and especially enterprise applications) are complex, often integrating with other applications (JMS, Integration Brokers), multiple databases on various platforms, etc etc. J2EE/Java caters for all of the complex tasks that you can think of.
Let me also say that I'm not saying Java should be the be all and end all of all applications. I like PHP, Perl, and I started as a C programmer, ventured into Delphi and Powerbuilder. Thinking back, Java seems to have been around for most of that time. Should tell us something?
.NET - not for me thanks.
.net is platform dependant, momo does not count since it is not officially part of .net. MS doesn't have the guts to make it truly platform independant.
Why use a poorly implemented copy, that ties you very close to a single architecture, and puts you at the mercy of a company that can and will make changes to boost profits, not for technical reasons?
Java is now a wonderful way to write a large graphical application that is expected to have a 10-20 year product life. No experienced programmer would take on a project like that using a scripting language, so the whole comparison of Java to scripting languages is rather silly in my opinion.
Java meets all of the criteria for a major language to have a significant impact on the industry for decades to come. Specifically.
1) It fills a need - platform independent GUI development.
2) It is well rounded, meaning that there are many available books, libraries, programming utilities, etc.
3) It is available for all major platforms.
4) Java is being used by a large percentage of the industry right now. Since many major codes end up having a 20 year product life, all of these projects will keep Java going for decades to come.
Look at how long Fortran has stayed around. It's now a pretty small percentage of the market, but there are still companies that are completely focused on Fortran and even starting new projects from scratch and choosing Fortran from square one. It's not my favorite language, but it just goes to show how long a language will stay around once it has acheived a major share of the market. Java's market share right now, is probably about like Fortrans market share in the late 1950s. (That's my guess. Does anyone have statistics to back it up?)
As such, Java can't die out for decades to come. The only question left is whether the current level of Java's acceptance is it's plateau or if it's golden age is yet to come.
Java and .Net IDEs are available to maximize productivity.
Web development with Java/JSP and ASP.Net are more or less similar already since the release of Java 5 and JSF.
Java applications with GUI are known to be slow in Windows for some reason so it is best to develop GUI applications in .Net when working with Windows. For the other platforms, Java, of course, performs well.
Background processes and services with Java and .Net are on equal stand except that Java can be cross-platform and .Net is specific to Windows. Although, as mentioned in the article, more and more Java-based products are actually developed to target a specific platform and device.
In a way, because .Net targets the Windows platform, .Net can grow with Windows. Microsoft is already actively integrating .Net in most, if not all, of their products. Simply put, as Windows grows, you can be sure .Net grows.
On the other hand, Java grows on its own as a language because its growth depends on the implementations of the many third-party innovators using Java. This is actually an advantage because Java can grow in more ways than one.
Side note: For the C++ fans, keep it cool... you're always good anywhere... ;)