Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Java Programming

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'."
This discussion has been archived. No new comments can be posted.

Q&A With James Gosling, Father of Java

Comments Filter:
  • by Anonymous Coward on Monday March 19, 2007 @02:10PM (#18404611)
    I thought he was also the father of Java? Whatever happened to that guy? Pretty unjust to not give him credit, right?
  • Q: Do you believe that an open source development model is inherently better for security?
    J.G.: Oh yeah.
  • by jorgeleon ( 928288 ) on Monday March 19, 2007 @02:14PM (#18404673)
    "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'." ... and that is why I still program in assembler and I use notepad.
  • For the longest time, all of the source code for Java has been available to everyone. And until recently it came with a licence that said: 'The source is open but you can't redistribute the results of any of your changes without passing the test suite.'


    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.
    • by mpapet ( 761907 )
      The key is your distro is capable in some way or another of using the word Java and their logo and probably redistributing it.
    • by roscivs ( 923777 ) on Monday March 19, 2007 @05:14PM (#18407027) Homepage

      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.
      The old license also had a clause that said you couldn't distribute the SDK with a competitor to Sun's implementation. This was probably intended (like the test suite restriction) to avoid any Microsoft-style "embrace and extend," but there was enough worry that distributing the SDK along with gcj was against the terms of the license that just about every Linux distro opted to distribute a non-Sun Java.
  • [karmawhore]

    What's your take on Vista?
    I tend to stay away from Microsoft [software] because it tends to be so toxic. I'm not exactly an expert on the state of Vista. But it sure seems boring. They've put in a lot of eye candy but other than that it seems like an awful lot of money for not very much.
    [/karmawhore]
  • "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'.

    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)

      by somepunk ( 720296 )
      It has been said that democracy is the worst form of government except all the others that have been tried.
      -- 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)

    by bendodge ( 998616 ) <bendodge&bsgprogrammers,com> on Monday March 19, 2007 @02:54PM (#18405181) Homepage Journal
    I'd really like to ask him what he is doing about Microsoft's efforts [edge-op.org] to poison Java.

    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.
    • 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).

      • You do realize that memo was ten years ago, right?
        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."
        • 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.

          • As always Reality Master, you're spot on.

            Sun's dying, gasping last breaths is the open source of Java. "Yippee hooray, free labor....we care about "the community".
        • You do realize that memo was ten years ago, right?
          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 .NET out there?

          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)

          by VGPowerlord ( 621254 )

          You do realize that memo was ten years ago, right?
          I doubt MS has changed its goals regarding Sun in the last 10 years.

          You do realize that Sun sued Microsoft [techlawjournal.com] nine years ago, right?
    • IMHO, using platform-specific dependencies (like DLL's) should be the only possible way to make Java that isn't cross-platform.

      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

  • by Anonymous Coward on Monday March 19, 2007 @03:03PM (#18405297)
    I've read TFA, it's always interesting to see was Gosling has to say on Java...

    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.

    • by rewt66 ( 738525 ) on Monday March 19, 2007 @03:40PM (#18405783)
      The technique you describe is useful, even powerful. Being able to think in that way is a great asset.

      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.

      • by rnicey ( 315158 )
        If I get him right, you'd abstract the interface (which is the point of them anyhow, so maybe inherit is a better term). Eventually you'd have a Mustang class that implements the Car interface which extends the Vehicle interface. It's still abstraction because 'mustang instanceof Vehicle = true'. You'd surely have to be able to specify methods on your interfaces, otherwise as you state you have duplicate code everywhere. By the time you boil all that down you're looking at another weird version of multiple
      • Re: (Score:3, Insightful)

        by aug24 ( 38229 )
        Not so...

        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
      • That's because the language forces you to use inheritance if you want automatic code reuse, a bit of ugliness that Java seemingly inherited from C++ and made even worse by removing multiple inheritance. It really should be delegation instead, in which case the strict class/interface separation approach would've made a whole lot of sense (and it does in general; see Sather for a good example).
    • 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

      • by gh ( 68417 )
        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.
        • 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

  • ugly child (Score:2, Informative)

    by nanosquid ( 1074949 )
    People should remember that Java started out as a set-top language and was released when that project failed. Then, it was supposed to turn the web into an application delivery platform, and it failed miserably at that, too (Ajax is now succeeding there).

    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)

      by owlstead ( 636356 ) on Monday March 19, 2007 @05:30PM (#18407227)
      "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."

      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)

        by Siker ( 851331 )
        Java is a miserable failed academic experiment. It is written for the people who enjoy a healthy dose of philosophy in their work life, yet never actually need to work on anything practical. For the developers of Java, a programming language is not a tool to solve problems. It's an exercise in philosophy.

        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
        • I am very sorry for you that you don't get anything done by using Java. Unfortunately for you many, many people are and getting things done in smaller amounts of time than before. But your starting statement really discloses what you are: a troll. Calling a language that has had such an impact a failed academic experiment is simply wrong, if only for the number of Java applications out there.

          Maybe you are currently running into things that you/Java cannot handle, but I hope that you will get them fixed even
      • The Java API is as awful as the language behind it. You can only say that if you have not used any other useful API, ever. Java the language is not a better C++, is a dumbed down C++ with some standard stuff added to make it buzzword compliant.

        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
      • API is rather brilliant in both its usability and its extensive features, not to mention its documentation.

        Compared to most C++ frameworks out there, which (mostly) suck at that. The world isn't just Java and C++.

        The Java language is rather easy to learn

        Compared to C++, which sucks at that. See above.

        and isn't too far from C++ to be easily learned

        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

It's a naive, domestic operating system without any breeding, but I think you'll be amused by its presumption.

Working...