Q&A With James Gosling, Father of Java 172
Minaloush writes to tell us that in a recent Q&A with Sun's James Gosling, the father of Java fielded questions on the GPL, security, the role of Java in the enterprise. "If you come up with a good software development tool, that makes life easier for the developers and they can get their job done quicker, then the first thing the manager says is 'oh you've got free time on your hands. Do this extra thing'."
What about Patrick Naughton? (Score:3, Interesting)
Re:What about Patrick Naughton? (Score:5, Informative)
He got caught in one of those chat room stings, trying to set up a little get-together with some way-underage female.
Re:What about Patrick Naughton? (Score:5, Funny)
Re: (Score:1)
Re:What about Patrick Naughton? (Score:5, Funny)
Re:What about Patrick Naughton? (Score:5, Funny)
Re:What about Patrick Naughton? (Score:5, Funny)
Another reason I can avoid Java (Score:5, Funny)
> He later resolved the case in plea bargain with the U. S. Attorney's office in exchange for working for the FBI for a year to develop software to assist them in their online investigations.
I wonder if he is going to burry the check
if (suspect == "Patrick Naughton")
{
}
somebody else can make sure that is Java syntax.
Re:Another reason I can avoid Java (Score:5, Insightful)
Re: (Score:2, Interesting)
Re: (Score:2)
Re: (Score:3, Funny)
* @deprecated Use getJavaFather instead
* @see #getJavaFather
*/
public static Object getJavaFathers() {...}
Re:What about Patrick Naughton? (Score:4, Interesting)
So why isn't he a registered sex offender? (Score:2)
Nice quote (Score:1)
J.G.: Oh yeah.
Re: (Score:2)
All the sudden I pictured Gosling as the Kool-Aid Man, busting through my cubicle wall and shouting "Oh Yeah!" a la the 80s marketing campaign.
I'll be having nightmares about that every time I use Java, thanks to you.
What explains Sun's change on Java? (Score:4, Informative)
Not long ago, Gosling poo-pooed the idea of turning Java into an "open source project" [devx.com]: "If Java turned into an open source project, the enterprise development community would go screaming into the hills.". In the same article, author Glen Kunene described Gosling as being "ambivalent about Apache's Harmony".
Similarly, Richard Stallman once described Java as being a trap [gnu.org] because one could write free software programs in Java that depended on features only non-free Java software provided. He also wrote about what a non-event it was that Sun allowed more people to distribute its then non-free Java software [gnu.org].
Taking all of these quotes and descriptions at face value, assuming nobody was lying, what explains the change in view? I believe that the competitive pressure created by free software Java implementations pushed Sun to stay relevant [digitalcitizen.info]. As the free software Java implementations became more functional and more likely to replace Sun's Java software, Sun saw they could free their implementation and continue to compete. In so doing, Sun also became a top contributor to the free software community and got free software luminaries (Stallman [digitalcitizen.info] and Eben Moglen [digitalcitizen.info]) to speak in support of their relicensing.
Then the best ide is .... (Score:4, Funny)
Re:Then the best ide is .... (Score:5, Funny)
You're such a wuss... I program in hex using vi!
Re:Then the best ide is .... (Score:5, Funny)
Set the switches and hit the commit button to load the opcode into memory.
Re:Then the best ide is .... (Score:5, Funny)
Re:Then the best ide is .... (Score:4, Funny)
plug-boards? Yeh whipper snappin' kids. Back in MAH day, we had to put rocks in lines of dirt! And the gawddamn boss made us buy our own rocks!
Re: (Score:2)
Re:Then the best ide is .... (Score:4, Funny)
Re: (Score:2, Funny)
Re: (Score:2)
Re: (Score:2)
And I was glad someone else picked up the plug boards. B)
Re:Then the best ide is .... (Score:5, Informative)
Of course you have to be careful because it wasn't until the late eighties that the industry completely standardized on the eight bit byte. Memory sizes in the late 70s and early 80s were usually specified in terms of "words", a word being the particular machine's most natural size operand for integer arithmetic. The PDP-8 came with 4KW of memory, where each word was 12 bits. Thus our 4KW of memory was in actuality a whopping 6KB of core memory. The PDP-10 had a 36 bit word; the very early versions that had "8K" memories actually had 36KB.
Bill Gates claims he never said that 640KB was all anybody would ever need. Back in 1981 he must certainly have been aware that some people needed more. You could buy a PDP-10 which could address 32 separate segments of 256KW. Since each word was 4.5 bytes, each segment amounted to 1024KB, giving a total of 36MB (36.864MB you use powers of ten instead of powers of two).
Re: (Score:3, Funny)
Re: (Score:2)
Isn't the old license quite a bit more restrictive (Score:5, Interesting)
Isn't the old license quite a bit more restrictive than just passing a test suite? I mean, many Linux distros have either been requiring that the J2RE and so forth be downloaded from sun.java.com or they've been requiring that you download 3rd party implementations based on the Sun source like blackdown. It doesn't sound to me like the license was ever as laisez-faire as Gosling seems to be implying here.
Yup (Score:2)
Re:Isn't the old license quite a bit more restrict (Score:5, Informative)
He talks about Vista too (Score:1, Redundant)
Expectations (Score:2, Insightful)
Reminds me of somethng Winston Churchill supposedly said: "If you every day do a little more than is expected from you, it doesn't take long before people expect even more from you."
Either great minds think alike or he is stealing from the best.
GMTA (Score:2, Interesting)
-- Winston Churchill
Unix is the worst operating system; except for all others.
-- Berry Kercheval
Those who cannot remember the past are condemned to repeat it without a sense of ir
Questions (Score:3, Insightful)
I have been doing some peripheral help with a Java converter that converts from GML to Java, and it doesn't seem very cross-platform to me, even though it has no dependencies. The converter gives odd errors on different platforms - even on different XP machines! And the pure Java code it outputs doesn't run on Macs.
IMHO, using platform-specific dependencies (like DLL's) should be the only possible way to make Java that isn't cross-platform.
Re: (Score:2)
I'd really like to ask him what he is doing about Microsoft's efforts to poison Java.
You do realize that memo was ten years ago, right?
And the pure Java code it outputs doesn't run on Macs.
Anyway, as you've noticed, Sun ultimately didn't need any help poisoning Java and making it less than useful for everyday life (though, it did do better for what it was intended -- embedded apps).
Re: (Score:2)
I doubt MS has changed its goals regarding Sun in the last 10 years.
I just wish there was something totally cross-platform, with a motto such as: "If x doesn't work on everything, it should work on nothing."
Re: (Score:2)
I doubt MS has changed its goals regarding Sun in the last 10 years.
Microsoft (and nearly the entire industry, really) stopped caring about Sun about five years ago. They are irrelevent to anything important these days.
Re: (Score:2)
Sun's dying, gasping last breaths is the open source of Java. "Yippee hooray, free labor....we care about "the community".
Re: (Score:2)
I doubt MS has changed its goals regarding Sun in the last 10 years.
You're not even close to being able to stop riding the short bus. Do you realize that there's something called
I just wish there was something totally cross-platform, with a motto such as: "If x doesn't work on everything, it should work on nothing."
Hey retard, that's not Java. Better stick with C.
Re: (Score:3, Funny)
You do realize that Sun sued Microsoft [techlawjournal.com] nine years ago, right?
Re: Questions (Score:2)
A worthy aim, but if you want to be certain that code will run anywhere, you'd have to make sure that all resources it could access looked the same everywhere.
So, for example, you'd have to disallow all access to the filesystem. (After all, different systems will have different files on them, and you could write something that depends on particular files or directories.) You
best Gosling quote ever... (Score:5, Interesting)
Java is such a huge success, my favorite quote from TFA:
"...you can't send a parcel through FedEx without a bunch of Java code being involved. It's almost impossible to execute a financial transaction without a piece of Java code being involved."
So true... And GMail, and eBay. Read the enlightening paper on how Java / Spring is used at Voca (in the UK) to process real-world money, scaling at insane levels.
That said, to me, the best Gosling quote I ever read was in an Artima interview. Basically, Gosling said that he regretted not having gone "pure interface" in Java. Java could have been a much cleaner language if Gosling had gone this way: remove the "abstract" keyword/construct from the language (and hence remove the "protected" keyword too, which makes no sense once the "abstract" keywork is gone). And prevent concrete inheritance. So Java would have been a more OO language, where only inheritance of interface would have been possible. Some people (a tiny minority) program in Java in this way. Most people do not get that concept: that OO is all about ADT (Abstract Data Types) and that a concrete implementation should be a detail. To most people this is heresy, because "you've got to type more characters, you've got to create 'needless' interfaces,..." (in modern IDEs most of these problems are non-existent for you can delegate/compose using a single shortcut). Remove the abstract keyword today from the language, and you can millions of Java developers screaming and whining endlessly. It is sooo sad Gosling didn't do it before releasing Java to the public. Every single program out there today in Java would be more OO-ish and more testable.
It is interesting to note that Bjarne Stroustrup, on that very subject, has explained a great many times that "people simply don't get it". Here's a quote on the same subject by Bjarne Stroustrup:
"Since then I have consistently pointed out that one of the major ways of writing classes in C++ is without any state, that is, just an interface."
This is OO 101. And yet hardly anyone can understand this. I'm into OOA(nalysis) / OOD(esign) and it is not always trivial to do OOP using a 3GL (third generation language, like C++ or Java) but with some thinking and discipline it's possible to get close to "real OOP" using Java. Sadly this is not what 99% of the Java programming world is doing.
Re:best Gosling quote ever... (Score:5, Interesting)
But if I understand you correctly, you think Java should have required us to program in that way. Quite simply, that's a very bad idea. It's just another set of chains and obstructions that a language imposes on you for no good reason.
The main thing it does is make it so that you can't have a totally abstract class, a partially abstract derived class, and a fully concrete class derived from that. For example, if I had a Vehicle class, and then Car, Truck, and Airplane classes that derived from Vehicle, and then Mustang, Aerostar, Boeing747, and F16 classes that derived from those, the problem would be that Car, Truck, and Airplane could only define new abstract methods. They couldn't implement any methods that were defined in Vehicle, but which would make sense to have all Car classes have the same implementation. Then each Car class would have to duplicate the common code. Bad idea.
Re: (Score:2)
Re: (Score:3, Insightful)
The 'super' classes wouldn't be abstract, sure, but you would implement an IVehicle interface, then wrapper any IVehicle object (presumably Vehicle) as a private member object in a Car class, forwarding all the methods you wished to forward. Car would implement both ICar and IVehicle of course.
The forwarding could be done manually; automagically through an IDE; via a keyword to be interpreted by the compiler (such as 'private forward IVehicle myVehicle = new Vehicle()') on the member variable obje
Re: (Score:2)
Re: (Score:2)
One way around this is to figure out which is the "main" heirarchy and which is the "mixin" (one class dominates in terms of size, importance, number of methods, or some such). Then you have the mixin as a member of the main object, and pass the mixin object to the main object's constructor. Then you have to implement the methods that you would like to b
Re: (Score:2)
That said, to me, the best Gosling quote I ever read was in an Artima interview. Basically, Gosling said that he regretted not having gone "pure interface" in Java. Java could have been a much cleaner language if Gosling had gone this way: remove the "abstract" keyword/construct from the language (and hence remove the "protected" keyword too, which makes no sense once the "abstract" keywork is gone). And prevent concrete inheritance. So Java would have been a more OO language, where only inheritance of in
Re: (Score:2)
Inheritance is not the only way to reuse code.
Delegation also does not have to be a burden if the language itself supports it as a feature vs. making the developer hand-code all of it.
Re: (Score:2)
Have you never used composition and delegation in OOP? Inheritance is not the only way to reuse code. Delegation also does not have to be a burden if the language itself supports it as a feature vs. making the developer hand-code all of it.
Yes, I use composition all the time. Composition is no way to reuse code. It also breaks the IS-A/HAS-A paradigm. MyCoolComponent doesn't *have* a JComponent. It *is* a JComponent. And I should be able to add it to a Container class. Except the Container class wil
Re: (Score:2)
Its getText-method is deprecated, so there goes your IS-A-relationship. For an added bonus, cosider what should happen when you call add(myJComponent) on a JTextField. Anything that forces designers to chop down trees like that is good, period.
Well just because one method (TextComponent.getText()) is overrridden/deprecated does not mean that the IS-A relationship is broken. Its just redefining the behavior. The basic idea "JTextComponents are GUI components that a user can enter text into" is still intact
Re: (Score:2)
Re: (Score:2)
Err, no. Objective-C and the NeXTstep Foundation classes were inspired by the SmallTalk language and environment, then came Java which was directly inspired by NeXTstep. Gosling himself admits as much, and it makes sense as Sun considered using OpenStep to replace their OpenLook and CDE desktop environments in the mid 1990s. C++ is the language that was inspired by Simula and Modula, as they were the object oriented languages that Stroustrup was familiar with. Java is really SmallTalk with a more C like syn
ugly child (Score:2, Informative)
The reason Java isn't a footnote in history is because of the enormous efforts people and companies other than Gosling and Sun have invested in fixing up its problems and turning Java into a decent platform for server-side development.
As far as I'm concern
Re:ugly child (Score:4, Insightful)
Bollocks. The Java API is rather brilliant in both its usability and its extensive features, not to mention its documentation. The Java language is rather easy to learn (many, many universities use it as the first language of choice) and isn't too far from C++ to be easily learned. And it's memory protection and garbage collection make life *much* easier and safer. That is the reason why Java succeeded, and most, if not all of it (in the first years) by extensive help by Sun. And Sun is also responsible for keeping Java the clean language it is today, without pre-processor, without operator overloading, properties and all the other things that makes maintaining C++ so much *fun*.
Re: (Score:2, Insightful)
I work with Java professionally and I spend a frightful amount of my time just fixing the underlying system. Swing, lack of closures and multiple inheritance, lousy string handling, fantastically bloated co
Re: (Score:2)
Maybe you are currently running into things that you/Java cannot handle, but I hope that you will get them fixed even
I disagree with you... (Score:2)
The Java VM, however, with its JIT compiler and stuff, is a marvelous work of art. This JVM is not necessarily 'Java the language' centric, as compilers for other languages have been provided. I only mention this so you won't confuse both concepts. Garbage collection
Re: (Score:2)
I agree with you on the Lisp part.
Here is a nice link to Lisp and Scheme implementations [robert-tolksdorf.de] on top of the JVM.
Re: (Score:2)
Compared to most C++ frameworks out there, which (mostly) suck at that. The world isn't just Java and C++.
Compared to C++, which sucks at that. See above.
Not sure what being close to C++ has to do with being easy to learn. At any rate, Java similarity to C++ is mostly syntactical, there isn't much in common there
Re: (Score:2)
Most of the Java API was created by the JCP, not Sun
Nope, it was mostly written by Sun programmer. The Collections classes were heavily influenced by OpenStep and written by a team that included Scott Meyers (he of "Effective Java" fame). The "Rose" library that became Swing needed heavy reworking by Sun as the Netscape code was little more than a proof of concept.
Java is sorely lacking in both good documentation and any form of specification.
The Sun hosted webpages, along with the Netscape ones b
Re: (Score:2)
Doh! I meant Joshua Bloch, not Scott Meyers - he of course wrote the "Effective C++" books that inspired "Effective Java".
When will the Unipress Emacs be GPLed? (Score:2)
Re:Uh yeah... (Score:4, Funny)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Insightful)
Seeing that COBOL is still being maintained, and Java is getting taken up more and more atm, I guess that'd make it around 50 years from now.
Re:Yeah, so? (Score:5, Insightful)
Crafting tools is not wasting time. Frequently the fastest way to accomplish s six-week project is to take a month to write the tool...which will then complete the project in under a week. Management with your attitude will a) never see tools produced that increase the department's overall productivity and b) you won't have the best people working for you. No one likes working in a hamster wheel, and your shop smells of cedar shavings from here.
Re: (Score:2)
He's not saying not to write the tool, he's saying that you should be given another tool to write when you're done. Gosling seems to be surprised that developers aren't getting fired instead.
Re: (Score:2, Insightful)
Re:Yeah, so? (Score:4, Insightful)
Frequently the fastest way to accomplish s six-week project is to take a month to write the tool...which will then complete the project in under a week. Management with your attitude will a) never see tools produced that increase the department's overall productivity and b) you won't have the best people working for you.
What are you talking about? Are you saying you should be able to sit on your ass for two weeks, because you brought in something ahead of schedule? Guess what: you're being paid to work. If you bring in something ahead of schedule, you should expect a "nice job" with points that count eventual promotion and pay raise -- along with a new assignment.
Or to put it another way, when you're late with an assignment, do you pay the company back for the time you've wasted? Thought not.
Respect is a two-way street. No one like working in the hamster wheel, but no one likes managing (or working with) the prima donna who thinks he can just put in solid work when he feels like it.
Abe said it best. (Score:2)
Re: (Score:2)
Anyway, I agree, if you create a useful tool in the course of completing your tasks, go for it. Perhaps it can be useful later. However, if you find yourself idle and just decide to work on some nifty tool you think would be cool, then you're wasting your and the company's time.
Re:Declining Popularity? Not quite... (Score:5, Interesting)
Declining popularity? I remember recent studies showing that Swing is the most used UI toolkit, I believe Java is the most used language for corporate and commercial web applications, and Java programmers are in higher demand than ever. What makes you think it's declining in popularity? Maybe it's lost its "cool" factor to Ruby and Python, but not popularity.
Here's a couple of links from this year to back me up:
http://www.jasonkolb.com/weblog/2007/02/programmi
http://www.tiobe.com/tpci.htm [tiobe.com]
Re: (Score:2)
My crystal ball says:
Java -> COBOL
Ruby/Python -> Pascal
There truly is a massive amount of business infrastructure being produced in Java right now
Re: (Score:2)
Re:Declining Popularity? Not quite... (Score:4, Insightful)
Your predjudice is baseless. The reasons behind the existence of both languages have a great deal of overlap.
No language, no matter how "fast, maintainable, [or] highly portable language", can prevent an enterprise app from becoming a total maintenance nightmare after 20 years of feature creep. That's why it's analogous to COBOL. A few decades from now, extensive and current Java experience will command some nice consulting fees. I also predict Ruby/Python knowledge to become about as useful Pascal.
Re: (Score:2)
Of course, Java is used for other tasks as well (as was COBOL, of course), but it's at the heart of the programming done by people who wear ties while they code.
This is not a criticism of Java as a programming languag
Perhaps "most used" means more hours (Score:3, Insightful)
Re: (Score:3, Insightful)
You mean that Java/Swing can get rid of the fantastic dynamic resizing capabilities and return to the days of fixed-size windows? Fantastic, to hell with the user changing monitor sizes, going to bigger fonts, etc...
Re: (Score:2)
On the other hand, I didn't realize that a Java app could be truly usable on my cell phone without any GUI modification because of the "fantastic dynamic resizing capabilities" of Swing. Or perhaps this capability is as overhyped as WORA.
Re: (Score:2)
So you think that moving back to 1990s technology is a better step for Swing, since it can't solve the problem of getting a desktop application to automagically work on a cell phone?
Swing UI development is not difficult; in fact, if a developer wants to force components to be of fixed size and location they can do that straight up, out of the box (heck, they could turn to PowerJ [google.com] if they're looking for 1990s GUI development for Java).
Are you truly trying to tell me that companies went belly-up because t
Re: (Score:2)
I'm just saying that it's ability to scale to different screen sizes and resolutions is rather limited.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
It's very unlikely that a serious Java application is going to avoid using any 3rd-party libraries anyone (most apps I've seen at the very least use a few of the more common Apache libs). So it's going to be 5 JARs rather than 4 in your installer - how is it a problem? Especially when NetBeans can automatically prepare your application for deploym
Re:Why yet... (Score:5, Informative)
The WORA 'paradigm' as you called it is alive and well. j2se6 is fast - even swing is fast.
I've been using java for 9 years, first on the client and then on the server. The frameworks like struts, spring and shale are bringing religion and consistency to Java applications - and management LOVES consistency. Outside of corporate America, j2me is in most cell phones and set-tops.
Jobs on dice.com
'java' - 16156
'c#' - 6634
'asp' - 3521
'asp.net' - 4581
'.net' - 9097 (inclusive of previous keyword)
Fatality. Rayden(Gossling) Wins.
Re: (Score:2)
Re: (Score:3, Interesting)
Re: (Score:2)
I doubt that Java is that much harder for a VB shop to move to than C#. Plus you are not stuck with a one vendor one OS solution.
Why would a Microsoft shop go with Java, when C# 3.0 is coming out? I guess there's a point to be made that Java is so dumbed down that a VB shop could handle it, but typically it's Microsoft tools that keep them coming back.
Re: (Score:2)
I don't have time to learn a programing language that only runs on one OS. That is why I never learned VB.
C# may be worth learning under Mono.
Re: (Score:2)
Re: (Score:2)
I also write C and C++ when required, but that hasn't been for a while now. You use the most appropriate language for the job, and the server side belongs to Java, period.
Re: (Score:2)
...and Stackless. (Score:2)
Quick! Somebody tell CCP!
Re: (Score:2)
"Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern."
Uh, rails is more than web because it does web applications? Eh, color me surprised.