James Gosling on Java
prostoalex writes "It's been ten years since the official introduction of Java - a programming language combined with virtual machine and a class library. ZDNet published an interview with James Gosling, the creator of Java, who talks about the project's past, present and future."
Also, why does Sun waste all the effort on NetBeans? I'm sure it's a very capable IDE, but isn't nearly everyone else using Eclipse? Where would Java or Eclipse be if Sun put all the engineering time from NetBeans into a more useful project? I guess here I don't see the value of the competition as much...
Agile Artisans
...his social skills leave a lot to be desired...
I'm not sure what bad social skills you speak of, but here's how I usually approach that: if someone is really capable, they can be eccentric, even arrogant. If they're stupid, forget it. Gosling is definately a skilled individual, so he gets some asshole points, imho.
Netbeans is so cool. It has completely shed its molassas past, and is now an example of what can be great about Swing applications.
Yes, Java is slower to run than C++. However Java is faster to write than C++; and I think that's the real issue.
In terms of power of expressivity, I think they're about the same, but I find Java easier to read than C++, and I find that mid-level programmers make far fewer subtle "shoot yourself in the foot" mistakes in Java than they do in C++. The run-time array bounds checking, lack of pointers, checked exceptions, and the lovely NullPointerException serve to keep a lot of people out of trouble. The embarrassing wealth of pre-written, tested, free, source-available modules Java has, over the reinvent-the-wheel approach of C++ goes a long way in improved programmer productivity. Here's a test for you: have one of your middle-skilled programmers do some network communication in Java and C++ and see which program takes less time to write and works better.
No folly is more costly than the folly of intolerant idealism. - Winston Churchill
We considered Jython and Groovy when we were adding scripting to an app, since they were the only two scripting languages that came with licenses that were found to be acceptable by our legal department. We went with Groovy. Although the Jython guys angrily insist that they are still working on the project, it's been 3 years since the last stable version of Jython was released. Since then the only release has been in July 2003, and it was an early alpha. Groovy OTOH has a lot of people working on it who have been putting out a new release every few months. Jython has not been updated in years. Which is a shame, because I was rooting for Jython.
There are other attacks, but most of the "exploits" are due to a buffer overflow (90% of all exploits? 95%?). Heck, if I'm am not mistaken it was a buffer overflow that put an end to the "x years without a hole in the default OpenBSD install" slogan :(
Now how many buffer overflow did happen in the JVM in the last 10 years?
I think the answer is zero. And if it's not zero, it's only some implementation of the JVM that was at fault.
For me it's all about the sandbox. Java, Jython, Groovy, you-name-it... I don't care. As long as it targets the JVM. It's tried, lean, mean, rock solid technology. You just ain't escaping it.
In TFA (yup, I did read it), Gosling says that "The only serious divide is they (C# / .Net) have this unsafe mode which they use a lot. One of the principles I believe in is there shouldn't be an unsafe mode."
That's a good principle to believe in.
Everytime java is discussed on slashdot, I'm amazed at how some junior leaguers try to dismiss it because they can point out one application where java is a poor choice.
There are some applications where it does not make sense to implement in java. However, I say that java is a great choice for the top layer of a web application server stack. There are a lot of web apps that take the form of:
1. Gather data from one or more databases.
2. Perform some consolidation and express the output in html.
In this example, java is a consolidator of data from disparate data sources. It needs to hang on to several network connections and do some simple IO but it does not need to burn the CPU at 100% because it spends most of it's time blocked on IO. Java is a great choice for applications like this because there is a very large and active community working to make java dynamic web serving better and better. Every year your organization can, for free, upgrade to a new version of java and simple app server like Tomcat and reap the rewards of the communities improvements. Also, in my experience with server applications, the promise of portability is real. I've ported from windows to solaris and then to linux without changing the java application.
Java is very important in the research community. I have been a grad student for past 3-4-5 yrs (..have lost count by now :) but I have never used any language other than Java for my projects/experiments . Be it simulation requiring a Knowledgebase of million RDF triples or be it a Medical Imaging Software to be used by Physicians.. it does it all.
Somehow 'application researchers' like me are fascinated by the extent of its use.. (drawing nice GUIs or plotting graph with existing Jars)
With regards to question of scaling..lately companies like IBM have been working towards creating optimized JIT compilers for Java.. I had benchmarked one during my internship at IBM Research.. and it gave nearly similar performance to native C/C++ apps.
As I was searching for some info about JBuilder, I stumbled across this juicy bit that I had not seen before.
a d_id=34246
Borland announces JBuilder Roadmap; future will be Eclipse-based
The jist of the story is that in the first half of 2006, JBuilder will ship a new version, code-named "Peloton", which will be completely Eclipse-based !!!
http://www.theserverside.com/news/thread.tss?thre
below is much of the article text in case it gets swamped.
Borland has announced their technical roadmap for JBuilder. Later this year Borland will ship JBuilder 2006 which will add shared code and shared debugging features. In the first half of 2006, JBuilder will ship a new version, code-named "Peloton", which will be completely Eclipse-based and add better dependency analysis features.
The shared code and debugging will allow developers in different locations to participate in shared coding and debugging, as though they were sitting down together in the same room.
The Eclipse news follows up from their February announcement of joining the Eclipse board and their intention to re-build their entire application life cycle management product suite on top of Eclipse. Borland sees Eclipse as an integration framework upon which they will be building JBuilder as well as their other products. By leveraging Eclipse, they can realize the cost savings of not having to worry about maintaining IDE functionality, and integration with other Borland tools, as well as gaining a larger audiece via Eclipse and benefitting from the large ecosystem of Eclipse tools.
According to Rob Cheng, director of developer solutions at Borland, the major new addition planned for Peloton will be a dependency analysis feature. It will be able to understand the dependencies between different artifacts in the project, such as the link between JSP's and struts controllers, EJB's and the persistence tier, without the user needing to configure these explicitly or switch views. Debugging will be improved - stepping into different tiers will be easier without end users needing to manually set additional breakpoints.
Code-name Peloton comes from a cycling metaphor, which is used to describe a group of cyclists who can ride faster together than they could individually, reflecting Borland's emphasis on team collabortation features in JBuilder.
Borland has not announced any pricing information, but they are looking into offering a separate 'distribution' of JBuilder on Eclipse all integrated to make it easy for corporate clients to deploy.
Borland chose Eclipse over Netbeans after watching industry momentum and listening to customers who think Eclipse will be their next major platform.
When asked about what their differentiators for JBuilder-Eclipse over Websphere Studio will be, Borland responded that WS Studio is focused on Websphere, whereas JBuilder supports multiple application server platforms.
Luis De La Rosa in his 2005 predictions suggested that Eclipse will become the Java community's answer to Visual Studio.NET, as a de facto IDE; this being a good thing for the Java community, as Eclipse will help build a market/ecosystem for development tools much like Visual Basic, which is the real goal that Sun wants to reach: 10 million developers using Java.
Borland's decision to join IBM in basing their IDE on Eclipse is certainly bringing us closer to that prediction! What do you think?
They entirely overhyped it in areas where it's relatively useless (the desktop) and entirely underhyped it in areas where it's extremely useful (backend and embedded areas).
Now ten years later you talk about "java" and all anyone remembers are those horrible, sluggish AWT applets, running on netscape 4.0's broken JVM, which they used during the initial Java hype push. But almost nobody these days knows about the success Java met in unglamorous areas after the hype push had died off.
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
Ahem, I once delivered a program for an RS6000 and got the first access to that architecture at deployment time. It ran instantly, all I did before was to develop the program on windows with a Sun JDK, test it on a IBM JDK on Linux which caused me to alter one line of code in about half a million LOCs this program had including all the libs I used and them Deploy it on a Power based multiprocessor RS6000 which I could not get access to.
Indeed a problem for garbage collectors, luckily Java ships with several different algorithms. The one used by default (full halt for a step in generational GC) has the best throughput.
If you are more worried about short pauses you have two other alternatives however. The concurrent low pause pause collector will halt the application threads only in some phases of the collection, it is activated with the -XX:+UseConcMarkSweepGC flag (or system property). It does work in a different thread, so it is a good bet if you have multiple processors especially. The other option is the incremenetal collector, -Xincgc, which will do minor collections in parts with application threads getting to run between the steps (causing the pause to be spread out).
Another notable option in these multicore days is -XX:+UseParallelGC, which will launch several GC threads and do some of the work in parallel.
Overall there is a lot of opportunity to tune the Java garbage collector, google about on it a bit, it has been shown quite feasible to make nice interactive experience with Java (Jake2 anyone?). If even better guarantees are needed however it is probably best to look at one of the realtime JVM's. There are a variety available.
If anyone intends to post follow-up criticism to this post, be aware: Arguing with me will not make you right. I've already moved on. Don't waste your time.
So you are right no matter what and you want to have the last word in this. That's different from a five-year-old how?
Anyway, your long rant about stupid people behaving in a stupid way and your superiority over them doesn't touch the topic of smart people and how they interact. Small talk may prevent people from reaching Borg collective efficiency in terms of communication, but there is a lot more to it. You didn't figure that out yet, and you seem to be determined to keep it that way in the future. Good luck with that attitude!
Strangely, I agree with some of what you said. I have little respect for celebrities, sheep-like consumerism, phoney friendliness and corporate bullshit make me sick, and...
/. at all?
No. *You* missed on several points. This isn't about my personality. This isn't about that part of *your* personality either. As I said, "It's okay to not be a 'small talk' person, as you are." That's your choice.
You don't have to *like* anyone else's approach to life, but your inability to understand the purpose of smalltalk is so wilful, it suggests self-justification. Like it or not, small-talk has a purpose beyond the surface vacuousness. Human beings are complex animals, not what-you-see-is-what-you-get machines. It isn't rational to consider them accordingly.
You might like it that way, but that's something different altogether.
If I have cause to deal with someone, I don't want to find out that the person I'm dealing with is an impatient, self-centred, untrustworthy psychopath some time down the line. But I'm sure as hell not going to find that out by sitting the guy down at a desk and asking a bunch of questions. That's small-talk.... but, we've already been here. You don't like it. We already knew that.
When I talk of "self-awareness", I don't mean merely likes and dislikes, and your place relative to everyone else's shortcomings etc. I mean the ability to see yourself from a 'neutral' point-of-view, without imposing your own personality upon this. Your "self-awareness" has your personality stamped all over it, as far as I can tell.
And no, that's not "knowing one's place in the grand scheme of things?". It's knowing one's self. Anyway how do you know what the "grand scheme of things is"? If there's a "grand scheme of things", it's operating on a far grander scale than you're likely to be considering (to consider it requires you to think outside your own values, and also outside the values of the society you live in); sounds more like you're thinking about your place in society.
Maybe you're the type of person who cares about that sort of thing, after all. Hmm?
And then you said... I suppose I should be tolerant, though. You just haven't evolved past the need for meaningless braying when around your fellow species-members. It's not your fault--you were born that way.
Wrong. Stupid. Blinkered.
You make a *lot* of assumptions about me because you thought my consideration of the way others think, and the reasons for their behaviour meant I shared those values.
Wrong.
If anyone intends to post follow-up criticism to this post, be aware:
* Arguing with me will not make you right.
BRILLIANT! *This* is what I meant when I was discussing self-awareness.
Taken at face value, this is of course true. Unfortunately, it's also fairly pointless. Arguing in itself won't make them right; it won't necessarily make them wrong either. What *you* probably mean is "arguing with me will not convince me that I'm wrong". Never does, of course- that's human nature.
We're all like that, you included. You'd have figured that out if you were more self-aware.
* I've already moved on. Don't waste your time.
If what others think doesn't affect you, why did you bother posting to
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
I wouldn't waste time with this guy. I used to think like him in my teens and twenties. Now I'm 35 and living with the fallout from that moronic mindset. Ironically after five years I have enough code to start a software company of my own - the fruits of my geekly (introverted) labors - and what must I do? Pick up an MBA and become a MARKETEER. And get a personality transplant while I'm at it I guess. Wish I had more schmoozing and smalltalking experience at this point, let me tell you.