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

 



Forgot your password?
typodupeerror
×
Java Programming

Interview With James Gosling 216

Def Mango Raygun writes "There is an interview with James Gosling of Sun. He talks about some language features and why they happened. It's short, but informative"
This discussion has been archived. No new comments can be posted.

Interview With James Gosling

Comments Filter:
  • more information (Score:5, Informative)

    by flynt ( 248848 ) on Wednesday May 01, 2002 @04:50PM (#3446030)
    James has a homepage here [sun.com], for your perusal. There are some really interesting things on it, like the fact he is Canadian and likes pies in Bill Gate's face to name a few.
  • length (Score:5, Funny)

    by billnapier ( 33763 ) <{moc.xobop} {ta} {reipan}> on Wednesday May 01, 2002 @04:54PM (#3446066) Homepage
    It's short, but informative.
    Unlike the text of this submission, which is only one of those.
  • by sphealey ( 2855 )
    Correct me if I am wrong, but Java does not specify native support for decimal arithmetic. Had this been included, Java would have been in a very good position to replace all that Cobol out there. As it is...

    sPh
    • Use the BigDecimal class. It's standard and handles any size floating point numbers. Not quite as good as the Cobol version, but you can always write your own class if you are that picky.

      Sorry, Java is more based on C then on Cobol.
  • Huh? (Score:5, Funny)

    by swagr ( 244747 ) on Wednesday May 01, 2002 @04:54PM (#3446073) Homepage
    So the JDC interviewed James Gosling. Surely he [has] contributed to the JDC and has a log in, thus making him a part of the JDC collective...

    Next week on Slashdot: Taco interviews himself.
    • Re:Huh? (Score:5, Funny)

      by tswinzig ( 210999 ) on Wednesday May 01, 2002 @07:03PM (#3446997) Journal
      So the JDC interviewed James Gosling. Surely he [has] contributed to the JDC and has a log in, thus making him a part of the JDC collective...

      Next week on Slashdot: Taco interviews himself.


      The difference is this interview is interesting, and James Gosling knows how to spell.
  • Java has a long way to go in my opinion. I am in banking and see development wheels turn slowly. We have been begging for code to become more web-based or at least more centralized, and instead, our host systems more and more push data to the desktop, which is running some PC application.


    I myself code just about everything in a server-sided web application. I can extend this to the desktop using Java, but to date have not seen a need. I know it takes more time this way than to fire up Visual Basic and create an application that way, but I don't run Windows, and my programs work on just about any system.


    As for the imbedded market, Java has the capabilities, but I don't know if developers are going to embrace it much with licensing issues, code changes between releases, and the increasing number of non-Java tools that effectively get the job done.


    Five years? Java will be with us, and there will be more of it out there. That might really be its peak usage before it falls like RPG, COBOL and other great languages that revolutionized computer program development.

  • by foobar104 ( 206452 ) on Wednesday May 01, 2002 @05:02PM (#3446138) Journal
    This interview is worth reading if only to get a laugh out of the way Sun's marketroids obviously sanitized it. In at attempt to make the text of the interview (which is just a transcript of a spoken exchange, after all) comply with Sun's trademark guidelines, they ended up with sentences like this:

    So, personally, you could delete [the] JDBC [API] from [the] J2SE [platform] and it would not affect any code that I've ever written.

    And this:

    That would make [the] Java [programming language] much more flexible.

    And this:

    Is it possible to submit the Java [technology] bytecode specification to a standards body like ECMA [and the like]?

    Sheesh. This interview was brought to you by the letters "[" and "]".

    • Your post is funny but this is a real issue. The company I work for wantJAVA [wantjava.com] had to change all their content to be In accordance with Sun's Trademark Policy. So now our site is covered with "[TM]". We also can't even use the name wantJAVA anymore.

      From our Espresso Pricing page:

      J2EE[TM] 1.3.1

      JMS[TM], CMP[TM], JNDI[TM]

      JMX[TM] Based

      JCA[TM], JTA[TM]/JTS[TM]

      I guess they need to protect their trademarks.

      • IANAL, but I have done a lot of datasheets and other marketing materials for my company. I believe the use of "TM" or the registered trademark symbol ("circle-R") is optional. You can also acknowledge trademark ownership with small print: "J2EE, JMS, CMP, JNDI, ETC, ASAP are trademarks of Sun Microsystems" or something like that.

        That's how we do it, anyway.
    • In at attempt to make the text of the interview (which is just a transcript of a spoken exchange, after all) comply with Sun's trademark guidelines, they ended up with sentences like this:

      That would make [the] Java [programming language] much more flexible.


      Actually I didn't read this as marketing speak at all. I thought they were making real technical distinctions. As Gosling pointed out in the interview, there are important technical differences between Java the language and Java the set of frameworks.

      In the quote above, for example, the speaker was talking about only the language, not the frameworks. The added words disambiguated the question so that its technical meaning was clear for those who don't yet understand the different things that the term "Java" alone can mean.
    • by Anonymous Coward
      I was working at JavaSoft shortly after 1.0 came out. The trademark police had just sent a long message around about how to properly use the Java trademarks, including adding [TM] in the right places and refering to everything as "Java Technology".

      In response one of the developers sent out a spoofed message about name changes to popular parts of the platform:

      java -> java[tm]technologybytecodeinterpreter
      javacc -> java[tm]programminglanguagecompiler

      and so on.

      The powers in change where not amused.
  • ECMA repot? (Score:1, Redundant)

    by astrashe ( 7452 )
    Anyone got a link to the ECMA report Gosling mentioned?
  • by revscat ( 35618 ) on Wednesday May 01, 2002 @05:03PM (#3446148) Journal

    From the article:

    JDC: Is it possible to submit the Java [technology] bytecode specification to a standards body like ECMA [and the like]?

    JG: Well, we actually tried to do that; to submit it to ECMA. And that exploded and turned into a rather bizarre episode. And actually, after that exploded, ECMA did an internal investigation and published a report, which is very interesting reading.

    Does anyone know what he's talking about? I saw this interview a while ago and have looked around in vain for the report he mentions. This would certainly be interesting, especially if, as I somehow suspect, Microsoft did something to prevent Java from becoming a standard.

    • I was curious about the same thing. I've done a number of searches on google and can't find anything. Found references on Sun's website to them announcing and then pulling out of the process, but no report.
    • JavaWorld story (Score:5, Informative)

      by lseltzer ( 311306 ) on Wednesday May 01, 2002 @05:26PM (#3446308)
      Sun's announcement [google.com] that they were withdrawing from the ECMA process was in December '99.

      The March 2000 JavaWorld [javaworld.com] has an interview with ECMA officials that, as Gosling says, makes for interesting reading:

      • ECMA responded by chastising Sun for causing an "enormous waste of experts' time and companies' money." In an interview today, a top ECMA official said Sun's criticisms of the group are merely a smokescreen for its real motives for ending the relationship.
      • "They just don't want to give up control" of Java, said Jan van den Beld, secretary-general of ECMA. "It is 100 percent my opinion that Sun is publicly saying they want to make Java a standard, but privately not making it happen."

    • Them as lives by the crystal ball shall learn to eat ground glass.
      Nevertheless, I'll hazard a guess.
      There is the old joke about a camel being a horse designed by a committe. Java is Sun's "baby" and if left to the vagaries of the standards body, somebody, sometime, somehow would manage to sabotage the integrity of the design. It's gotta be real easy to change Java to be more "programmer friendly", a la Virul Basic, and lose the integrity in the process.
      • ... somehow would manage to sabotage the integrity of the design.

        That's has to be the funniest thing I've heard all week.

        Java has some very nice featues, but design integrity is not one of them. It's supposedly an OO langanguage, but not everything is an object. Nor can you extend many basic types (such as String or Integer). You are often forced into a declarative programming style where an OO-style would be more natural (e.g., try getting the absolute value of an Integer). You can't iterate over collections without explicitly creating a superfluous, temporary Iterator object. There are numerous inconsistencies among class methods named 'add' and 'put'.

        Anyway, the bloated Java class collection couldn't do much worse under ECMA than the JCP.

        • Hello my friend! I was wanting to help you better write code in the Java programming language.

          "try getting the absolute value of an Integer"

          int x = y;
          if(x < 0)
          x *= -1;
          System.out.println("The absolute value of x is " + x);

          "You can't iterate over collections without explicitly creating a superfluous, temporary Iterator object."

          ArrayList arl = arl2;
          for(int i=0;i<arl.size();i++)
          {
          String s = (String)arl.get(i);
          System.out.println(s + " was retrieved without the use of a superfluous, temporary Iterator object.");
          }

          As you could see, these codes are easy to do. If you are having more questions then ask.

          • String s = (String)arl.get(i);


            Which is fine until you get handed a linked list instead, and your algorithm goes from N to N^2. I like to write iterators like this:


            for(Iterator i=list.iterator(); i.hasNext(); ) {
            SomeClass obj = (SomeClass)i.next();
            // do something clever
            }


            So there is a temporary iterator object, but it's only in the scope of the for loop so it doesn't really bother me. I'm actually more annoyed with the cast, hopefully the generics in 1.5 will take care of that.

        • You've got some good examples of inconsistencies. It would be nice if basic data types were objects. It would be nice if Integer and String weren't final. The iterator thing is nice, although it sounds to me like you've just read a C# book (really, a privately allocated local object isn't that awful, at least with modern garbage collectors). And the inconsistent naming of class methods is due to sloppy programming, although it would be nice if they enforced the get/set naming convention as a rule.

          However, you can't get an absolute value of an Integer? Ever try Math.abs(Integer)? It takes the absolute value of an integer. Perhaps you wanted it back as an object? Well, since int is not an object, you can always wrap it inside another Integer. Like "new Integer(Math.abs(Integer))". In both clases, replace "Integer" with your Integer object. This may not have the syntactic sugar as some languages, but its exactly what goes on under the covers if ints are not objects. Seems pretty straightforward to me.

          Of course, if Java had real generics, you could add these methods to the generic number class. Then the math functions wouldn't have to be in a separate class. But that's a different story. (yes, generics likely will be flawed when released, too, due to some design details concerning the JVM).
        • I would suggest there's a big difference between design integrity and purity. Java has a certain philosophy of what languages should be, where certain tradeoffs should be made, and it sticks to it. There's a significant amount of cognitive predictability in the language, it doesn't include "trap doors" to change the meaning or intent of well-known constructs such as operators, primitive (naturally "value") types, and reference/object types. One may complain that primitive types should be transparently viewed as reference types (the "autoboxing" argument), and that's a valid concern, probably to be addressed by Java 1.5.

  • Related information (Score:4, Informative)

    by sisukapalli1 ( 471175 ) on Wednesday May 01, 2002 @05:03PM (#3446149)
    The interview was very short and I did not find much information. Here are some related links:

    http://www.computerworld.com/storyba/0,4125,NAV4 7_ STO69691,00.html -- on .NET and J2EE

    Gosling on netbeans -- (03/2002)
    http://www.netbeans.org/articles/interv iews/james_ gosling.html

    An old interview from 2000 -- more on java http://www.devx.com/judgingjava/articles/gosling/d efault.asp

    Another from 1999 --
    http://www-106.ibm.com/developerworks/features/g os ling/

    S
  • by Anonymous Coward on Wednesday May 01, 2002 @05:04PM (#3446153)
    I think [that] the [person who acted in the capacity of the] editor [of this article] who keeps [repeatedly] butting in [to the questions and answers] for no [descernable] reason [or benefit] should just shut [the f*ck] up.
  • Well, I like java, but it's still special purpose to me. It excels in ecommerce and dynamic web stuff. It may someday excel at distributed systems since it will be easy to move code around various devices on a network.

    It's not a general purpose platform or language, imho, however. But there is one thing that would make it that way... hardware VMs... which would be JavaMs, of course, since they wouldn't be virtual.

    Where are the processors that run the java code on the chip directly?
    • Well, I like java, but it's still special purpose to me. It excels in ecommerce and dynamic web stuff. It may someday excel at distributed systems since it will be easy to move code around various devices on a network.

      I dunno. I can do the same without having to recompile every time I make a change [php.net].

      And it's open source :)

    • Why could that possibly matter?
      Do you care if you have a Transmeta or Intel chip to run x86 ops, aside from sheer performance?
      Or put this way, so what if it's dynamically translated?

      Secondly, picojava (?) chips do this. You can buy the core from Sun, and put them on your own chips. So, they actually do exist, but because they're all stack-based and in other ways fairly odd, you could probably do better with a dynamic translator than a silicon implementation, especially once you factor in volume.
      -Dan

    • ARM's jazelle core and others (do a google search or go to SUN's website) do this and supposedly it is already being implemented by mobile phone makers.
  • jdk's realtime isn't all that great, and is easily run awry. For great realtime java, check out NewMonics [newmonics.com].
    It runs on linux too!

    I may be a little biased though...

    • It may be on the site somewhere, but I sure didn't find any cost or license information at your site. Not a promissing start from my viewpoint.

      Also, it wasn't clear whether or not it was entirely aimed at embedded systems, or whether it supported some kind of Swing-equivalent library. Or, perhaps Swing was what you were supposed to use. But would it work? You mention that you have your own JVM, but you don't say anything about "binary compatible" etc., and even awt contains a lot of compiled code.
  • Java features (Score:4, Insightful)

    by ilyag ( 572316 ) on Wednesday May 01, 2002 @05:12PM (#3446204)
    I can't say I found a lot of information in the article... Still, here are some questions about the design of the language:

    1) Why are classes like Integer so weird? It is such a pain to, for example, increment them... Change of this would conflict with absence of operator overloading, true (I don't like that too much either, but at least can imagine why it's (not) there). However, why not make them magical like String's "+"?

    2) Several times I got caught on the fact that there is no way to pass an int by reference. And I don't like Integer (see aboive)...

    3) One (public) class per file. This especially bugs me with small interfaces. Such a waste of screen space and disk space (each file takes up 4k on the file system)... Why not allow to put a hierarchy of interfaces (and, preferably, classes) in one file?

    This wasn't intended to be troll, even if it looks and feels like one. ;)

    --
    I like '...' (and (nested) parens)...
    • Re:Java features (Score:3, Insightful)

      by GuyZero ( 303599 )

      3) One (public) class per file. This especially bugs me with small interfaces. Such a waste of screen space and disk space (each file takes up 4k on the file system)... Why not allow to put a hierarchy of interfaces (and, preferably, classes) in one file?

      Well, this is really a classloader limitation... there's no restriction to loading classes from a databse, across the network, from your back pocket, etc, as long as you've got an appropriate classloader.

      Besides, there are those things called JAR files... have you used Java much?

    • Re:Java features (Score:3, Informative)

      by ZeroConcept ( 196261 )
      1) Integer and String classes are inmutable, their value cannot be changed.

      2) I Agree with this, but some people argue that you should use the return value or create your own mutable wrapper of int.

      3) Try using Inner classes. I like the idea of the filename matching the classname as it makes it easier to browse trough code and reduces source control conflicts.
    • Re:Java features (Score:4, Informative)

      by SimonK ( 7722 ) on Wednesday May 01, 2002 @05:34PM (#3446358)

      Why are classes like Integer so weird?

      Because they're an afterthought. Java was originally designed without the primitive equivalent reference types and they were tacked on later to solve some problems which emerged. Basically, the problem was that there was no type that included both Object and the primitive types, which made reflection and collections hard to deal with.

      The original decision not to make the primitives objects is one of the Great Mysteries of All Time. Sun say its for "efficiency reasons", but Java's antecedent languages (Smalltalk, Lisp, etc) solved the same problem using type tags, so primtives look like objects even though they are implemented differently, and indeed the best VMs actually do this internally for other reasons.

      Essentially, its a mistake, IMHO.

      Several times I got caught on the fact that there is no way to pass an int by reference. And I don't like Integer (see aboive)...

      Java's basically an OO language. You can use it in non-OO ways, but you tend to run into problems like this. Basically, if you want to return more than one value from a method, you should probably group them together in their own class. If you want to use the return value to return an error code, you should learn about exception.

      I program in Java every day, and the inability to return multiple values is not a problem for me in practice.

      One (public) class per file.

      .class files act as header files as well as binaries. In order to preserve the sanity of programmers, the compiler builds any unbuilt sources. To do that it has to find them. Hence the "file must have the name of the public class" rule.

    • /** what are you talking about? **/
      public class NAMESPACE1 {
      static public class NAMESPACE2 {
      static public class MyClass {
      public String toString(){ return "hah!"; }
      }
      }
      static public void main(String [] a) {
      System.err.println(new NAMESPACE1.NAMESPACE2.MyClass().toString())
      }
      }

      I frequently code small standalone apps this way. Everything in a single wrapper class, just one big file.

      Joe
    • 1) Why are classes like Integer so weird? It is such a pain to, for example, increment them... Change of this would conflict with absence of operator overloading, true (I don't like that too much either, but at least can imagine why it's (not) there). However, why not make them magical like String's "+"?

      I'm pretty sure you can't change the value of an Integer, just like String. This is for efficiency. I'm sorta of two minds about not including operator overloading in the language, I love it in C++, but it can be good to have code that novices can read.

      2) Several times I got caught on the fact that there is no way to pass an int by reference. And I don't like Integer (see aboive)...

      Create your own container class. But passing int's by reference doesn't sound very object oriented, perhaps a change in style would be more appropriate. I have never run into the problem myself. I sometimes do it in C++, but I consider it a bad habit...

      3) One (public) class per file. This especially bugs me with small interfaces. Such a waste of screen space and disk space (each file takes up 4k on the file system)... Why not allow to put a hierarchy of interfaces (and, preferably, classes) in one file?
      I couldn't disagree with you more. Having a file per public class makes browsing other people's code much easier. It's a habit I have adopted in C++. grep is a wonderful thing, but it can break the flow when you're reading code in an editor. Wasting 4k on the file system isn't much of a problem, even on embedded systems. If it really really bothers you use a compressed file system or make you're inodes smaller, remember class files are minute compared to compiled code so you end up using much less space overall.

      Why Bill Joy still doesn't like templates puzzles me the most. I'm sure it could be done elegantly in Java.
      • > 2) Several times I got caught on the fact that there is no way to pass an int by reference. And I don't like Integer (see aboive)...

        Create your own container class. But passing int's by reference doesn't sound very object oriented, perhaps a change in style would be more appropriate. I have never run into the problem myself. I sometimes do it in C++, but I consider it a bad habit...

        Agreed, its a bad habit. Its a case of a function/method doing two or more things at once, improperly designed. If you need a return value to determine success, switch to a function that returns the changed/new value and fire an exception when failure happens. And just get used to catching exceptions.

        try {
        i = nextIntFromDatabase(i);
        } catch (SomeDatabaseException e) {
        ...
        }

      • I just hate when I have to fill, say, a JTable with a million numbers... and I have to use a million OBJECTS instead of primitives because that's how TableModel works.

        Suppose I could write my own primitive model/view framework... but that kinda kills the point of using a feature rich language in the first place :)
    • Why are classes like Integer so weird? It is such a pain to, for example, increment them...

      It's because they're immutable wrappers, just like String is.

      [T]here is no way to pass an int by reference.

      There's a kinda lame way: int[] intReference=new int[1];

      One (public) class per file.

      It's so you can swap implementations of individual classes in and out without disturbing the rest of a project. Given, of course, that the class signature doesn't change...

      When in doubt, quit your job.
    • One (public) class per file. This especially bugs me with small interfaces.
      But requiring the one public class to match up with the filename makes tracking down the source for a class *so* much easier. You know it has to be in that file. If you could throw a bunch of public classes in one source file, you'd lose this advantage.
      Such a waste of screen space and disk space (each file takes up 4k on the file system)...
      Ummmm, what decade are you living in? A 120G drive, which would hold about 31 million of those 4K source files. Each million source files costs you about 15c. You must be one hell of a prolific programmer! :-)

      Ohhhh, wait a minute, you're probably buying your disk drives from Sun, where it's $1400 for a 36G drive. I guess at 18x the price, that would make a difference :-)
  • hjava? (Score:1, Funny)

    by sarcast ( 515179 )
    I looked at the topic of this article and saw the usually witty one liner below that says:

    from the learning-more-about-hjava dept.

    And I thought to myself, what is this new fangled hjava that I have heard nothing about and what is there to learn?

    Then in my excitement, I realized it was just a typo...
  • by Bonker ( 243350 ) on Wednesday May 01, 2002 @05:21PM (#3446268)
    1. Why is Java so damn slow?

    2. Why do so many Java developers get so upset when you point out how damn slow Java really is?

    3. Why is it so much fun to pick on Java developers when there really are slower languages out there?

    4. If you could make Java fast, would you voluntarily leave it slow just so we could give Java developers apoplexy by mentioning how fast even PHP is for certain tasks?
    • For all of the posters who are going to respond with "Java can possibly be faster than C"...well, a color television could also possibly spontaneously appear at the event horizon of a black hole, but that doesn't mean that this actually ever happens.
      • A non-programmer friend asked me a while back how you can "figure out" prime numbers with a computer program. So.. In order to show him the basic idea, I "pair programmed" a simple example that just started counting from 1 and up and then for each number, looped from 2 and up to half the original number to do a modulo on them. I implemented it in Java first.. The next day, a guy at work asked me why I had done it in Java.. So.. I copy-pasted the 20-or-so line code to C and compiled it. Standard compiler flags for both Java and C.. And I ran it.. and timed searching the first 100000 prime numbers. Java was about 10% faster and I wasn't even surprised.. Why? Cause this is exactly the kind of situation where Java can be faster than C. It's very easy to do a similar test yourself. Doesn't even have to be prime numbers. Just do whatever kind of random math you want and see for yourself. With the HotSpot virtual machine, things like this get optimized like crazy by the virtual machine. If you would compile it with all speed optimization flags, inlining methods etc.. I don't know - I'm guessing C would be a bit faster, but it would still be very close.. But don't take my word for it - try for yourself.
        • "Copy-pasted" and then obviously modified it so that it would compile in C - such as not making a class out of the whole app, not passing a String[] to main(), not having main be "static" etc. :) Nothing essential such as the actual algorithm and math code was touched, however.
    • Answers... (Score:3, Informative)

      by TWR ( 16835 )
      1. Java is slow just to piss off people who worry that any scroll speed short of "the Flash on Steroids" is too slow. People who do real work and don't just run benchmarks all day don't notice.

      2. They're not upset; that's the sound of Java developers rolling around in the large piles of money they make writing software that people actually use.

      3. Because it's easier to nitpick the best product than it is to find all of the memory leaks and bad pointer refs in the C++ code written by l33t hax0rs.

      4. Yes; if you can amuse your inferiors at no cost to yourself, why not bring some joy into their sad lives?

      -jon

      • The real answers are :

        1. So that Sun (and IBM) can sell more hardware in order that Java developers can even run a "Hello World" type program.

        2. This is human nature. The Catholic church behaved the same way when Galileo pointed out the error in their doctrine.

        3. Everyone has their own reasons. I like picking on the unthinking masses.

        4. Thats a bit like asking "If you could make a perpetual motion machine...."?

    • 1) Java isn't slow. v1.3 and earlier of the JDK didn't implement video copies to utilize hardware acceleration (their line was "correct running first, optimization second). v1.4 fixes this. Scrolling is fine under JDK1.4. In fact, performance is pretty zippy under v1.4.

      2) Because Java is still the fastest OO language for server-side programming. Perl & PHP are faster but not object oriented. Servlets and JSPs are fast in large part due to extensive object pooling (although they've got some architectural flaws. tag libraries are my answer--all the performance of JSPs & Servlets with true separation of Model & View). And, besides, for loops that get executed frequently, HotSpot doesn't do a bad job with runtime optimization (and it's a *lot* easier than writing apache modules, the only way you'll get superior performance under Apache with C++).

      3) FUD? See #1, 2?

      4) See #1, 2.

      Look, people don't choose Java because it's the tightest language available. They do it because it's the best tool for the job. I don't know about you, but I get paid for proper design, not for optimization. I can get orders of magnitude performance improvements through proper design. This more than makes up for the loss in performance of a JIT interpreter.

      I write code faster in Java than in other languages (no, haven't tried C#...it does look like a nice language, though). They have fewer bugs. I get products to market quicker. It's slow? Then buy a new computer. Today, $500 will buy a computer nice enough to run Java comfortably.

      Java isn't the right answer for every job. However, for rapid application development and server side coding, it's a pretty damn good choice. It's slow? Yes, v1.0-v1.3 were slow with client code. Yes, v1.4 is slower with client code than C++, although it's close enough that I don't care. Java is a good language for getting things done, though. It's not pure OO. It's not perfect. But is is good at what it does. Choose the right tool for the right job.
  • Java code generation (Score:3, Informative)

    by descubes ( 35093 ) on Wednesday May 01, 2002 @05:22PM (#3446275) Homepage
    JDC: I'd like to see more tools that enhance developer productivity, we have Unified Modeling Language (UML) modeling tools, and wizards to help us generate code. Can we tie these together better?

    Another way to enhance productivity is to manipulate the Java source code itself (rather than generate code from the outside.) A good example of tool doing just that is Moka [sf.net]. In short, Moka is a Java-to-Java translator which allows you to extend Java in many interesting ways. For instance, there is a plug-in that allows you to remove any method or class whose name begins with 'debug'. There are other examples on the web page. I believe it's easy to use, and it makes up for various shortcomings of the language itself.

  • I read this. What a joke. Before I am considered inflammatory, I'd like to say I like Sun, and only hope the best of them.

    Sun is deep shit. For example, the successful integration of GNU, particularly GNOME into Solaris is imperative - yet they fail to do this continually, with any measure of aptitude or efficacy.

    I run both Solaris SPARC and X86. I am appalled at how this has turned out. I used to run SunOS 4.1.4, and now I've been through Solaris from 2.6 to now.

    On top of this all is Java, whose IDEs are severely lacking. I see more Java crap out there. In fact, I work with Java now. It's such a kluge, so close, yet they missed the mark, badly. I can't explain it. I don't see why the OO programmers ever liked this stuff. Its confusing bloated, and the abstraction makes the developers dumber and dumber every day. They wave this GARBAGE COLLECTION flag all over, and they have ceased to understand what garbage collection even is.

    We have this one guy who doesn't use an IDE when using Java swing. The windowing he created is useless. It's inconsistent as hell, and it takes him forever to implement anything. I'm not a big fan of this stuff. I don't understand if he a bad programmer or not, but I though the point of this OO stuff was to recycle classes and reduce work, but it seems only to create it.

    Back to Sun. SPARC is so far behind at this point, they need to do some serious work. We benched out some Alphas, SPARCs, AMDs and Intel's here, and let me tell you, the price performance for Sun is a joke. It's laughably horrible. This Opteron will make Sun's life very difficult.

    I once found a show stopper bug in Solaris, and I couldn't figure out how to call them to report it. I remember when the Cobalt support was free, it is no longer.

    Sun is full of dead wood. I know several alumni and a few people still work there, these are my friends, I live in the Valley. We all think Sun is screwing up so bad.

    Only time will tell. I hope Sun lives. They have a tact for doing things well, or t least they did. At this point, as the stock points out, the future looks grim. They have a huge opportunity to trail blaze now that Compaq and HP will be floundering around, Opteron isn't out yet, IBM is having some problems delivering, and Dell isn't quite there just yet, almost.

    I will bet they will squander this opportunity. They will let Dell catch up, and supercede, as dell already has in the 1U department. They will let IBM finish Linux and start being the ones that define Java. They will let HP and Compaq figure out how to not go out of business. They have no good leadership.

    I think its high time Solaris be thought of as a Kernel, and GNU needs to start pouring in. Solaris x86 needs to come back. Suns forte should be free. Its not worth much to tell you the truth. The compiler frankly sucks. They should write optimizations for GCC. They should bank on GNU. This resistance to and this adherence to this completely ridiculous System V is pathetic.

    They also need to start getting the Java community more involved in making Java and stop changing the APIs every 5 minutes.

    We tried talking to sun about being a VAR, as we are already a Dell VAR. The sales and marketing people there are pathetic. They know nothing.

    I'm still in shock that they have made support for Cobalt suck badly, and that I could never tell them about that show stopping bug I found in Solaris. I know former employees who will tell you this: "I don't know how to file a bug against them when you don't work inside the company, and I worked there."

    Sun, wake up. Start making use of that GNUish thing you bought Cobalt, and start acting like you give a shit about the little people. Your disgusting arrogance has pissed everyone in the Valley off. And get a new CEO for Christ's sake. I love McNeely, but he has the WORST case of ADD *ever*. He is good at shitting on MS, but the sad thing is. Microsoft is more in the bank than Sun's whole Market Capitalization. Yes, MSFT has more in the BANK as CASH, than all the shares of SUNQ multiplied by the current price.

    Now, if that isn't a sign for Sun to get OFF their high horse and start doing WORK, I don't know what is.

    Sun's inability to execute, to be competitive and to be innovative and to be connected INTIMATLY with even its TINY customers will kill it in the end. I know I wouldn't buy SUNW right now.
    • by Anonymous Coward
      Sun is doomed already. The reason: they don't have a viable business model. They've flopped back and forth between being a software company with open hardware to a hardware company with open software. Right now, they claim to have both open hardware and software. Their pushing Java and it's descendents, without a clue how they are going to derive revenue from it. Sparc, once a neat idea, is several generations behind the state of the art. Sun workstations are simply an order of magnitude behind a new x86 box running Linux in terms of price/performance. And IBM is eating their lunch in the high end server market. Personally, I can't understand why they're still in business. If they can't find something real soon that they can a) do better than anyone else, and b) actually make money doing, I'd expect them to go the way Osbourne, Kaypro, DEC, Tektronics, and all those other tech companies whose time has come and gone. (Of course, HP/Compaq may soon be added to this list if they don't figure out REAL SOON what business they are in.)


      It's the Business Model, Stupid!

  • Good language/idea, bad implemtation, I think it could have been done better...Better luck next time

    • Have you noticed that the syntax of Java is rather familiar (C++), and the semantics are not very new either (Simula 67)?

      Whereas the VM is remarkably innovative - bytecode verifier, security domains, JIT compilers, advanced GCs.

      Care to rethink those thoughts?
  • by pnatural ( 59329 ) on Wednesday May 01, 2002 @06:34PM (#3446759)
    I should post this anon because I'm sure I'll be marked down by the moderators/java coders with no sense of humor, but it's only karma. Here goes:
    If code were music, Java would be country.
    Anyone know where I could get that on a teeshirt?
    • You know, I'm no fan of country (Frank Black and the Catholics would be the closest) but it strikes me that this analogy is actually quite fitting. After all, country is the music of the hardest-working segment of America...those with the best work ethic in the nation...those that get the job done. Moreover, its a segment of America that is largely invisible to the masses. Just as it's not often you see a farmer or cowboy, you don't see a lot of shinkwrapped java applications -- yet it's powering the engines of businesses everywhere. I guess where the analogy breaks down is that there are lots of jobs to be had writing Java code, but you don't see many openings for pedal-steel guitar players. Plus there are more hot babes in Country.
  • Wasn't the real father of Java Patrick Naughton [slashdot.org]

    Funny how Sun revises its history after all their execs get busted for raping 13-year-old girls!

  • by Glock27 ( 446276 ) on Wednesday May 01, 2002 @07:05PM (#3447012)
    the dynamic that has made Java grow exponentially in 'real' software development, and become the dominant teaching language versus the constant bashing it receives here on Slashdot and among OSS people?

    Java is actually very good, and yes, very fast. I fail to understand why anyone would prefer Microsoft's poor imitation. Java is still growing very fast and getting better all the time.

    Ignore it at your peril. Or better yet, just laugh at it...that is until you're in the unemployment line because you don't know it.

    • I don't understand it, but I'm not going to let that stop me from responding. It seems to me that OSS and Java are natural allies. It's the only language that I know of that would allow me to be a debian user in the middle of a business that loves nothing more than the phrase "we're a windows shop". I can develop on linux, use the operating system that I love, and deliver on anything that we need to. While there are some OSS languages out there that provide the the WORA property, they're lacking in various things like the bytecode delivery model, the security model, the J2EE model for scaling up applications. Plus the weight of a diverse and active industry helps to sell it to management. Maybe those who bash it feel that they are safely out of the woods with respect to Microsoft's control of the industry, but I for one don't feel safe yet.
    • by Synn ( 6288 )
      The thing is, Java's strength is it's very weakness. Java is a platform neutral by design, so it's rather clunky when compared to a platform specific language. You won't ever see a game written in Java, not because Java is slow, but because you can't use Direct X with it(or whatever platform specific lib you want).

      I think Java is going to own the embedded market. A cell phone company can create Java software and it can happily switch around the cell phone hardware as much as they want and still use the same single piece of software.

      Palm Pilots are still popular for this same reason. There are tons of Palm apps that run on them and the new Pilots are software compatible with the older ones.

      .NET appears to be different than Java in that it makes no attempt at being platform neutral, rather it tries to be language nuetral. Python.NET, VB.NET, C++.NET all compile down to the same CLR. And a VB.NET developer can use Python.NET libraries.

      I think this will dominate the application market.
      • The thing is, Java's strength is it's very weakness. Java is a platform neutral by design, so it's rather clunky when compared to a platform specific language. You won't ever see a game written in Java, not because Java is slow, but because you can't use Direct X with it(or whatever platform specific lib you want).

        I beg to differ [gamespy.com]
    • Ignore it at your peril.

      But how many people appreciate that Linux is in peril?

      Right now, cross-platform code isn't a major issue because

      a) embedded or non-x86 Linux isn't that big yet
      b) people are used to compiling source

      but neither of these assumptions will be true in ~4 years. Linux will need a VM, but only Dotnet/Mono and Java will be available, and with the ridiculous hype that Mono is getting, MS could well be in drivers seat. Not a pleasant prospect...
      • Why do you think that we need a VM for cross-platform code? Debian compiled almost everything that's going to be released with Woody on 11 different architectures. Even if this is a problem, the solution has more alternatives than Mono or JVM; for one, it would be simple to toss a PowerPC, or Alpha or MMIX or whatever emulator into the kernel, and run Linux binaries compiled for that architecture.
        • Because Debian is the exception, not the rule.

          When I get some little music toy app for my PDA, you can bet it's not going to be pre-compiled for all existing platforms. 11 is the starting point, it's going to get a lot more diverse from now.

          I really don't think kernel emulators are in the running here - PDAs are constrained enough as it is without the overhead of x86 emulators. Nokia and other phone makers are setting the trend for small devices and compiled binaries are not part of the picture.
          • When I get some little music toy app for my PDA, you can bet it's not going to be pre-compiled for all existing platforms

            Your PDA may run Linux, but I seriously doubt it runs a full GNU/Linux distribution. You're going to be running a completely different set of apps.

            11 is the starting point, it's going to get a lot more diverse from now.

            Why? It's ported to pretty much every chip in production that can run it.

            PDAs are constrained enough as it is without the overhead of x86 emulators.

            But somehow they can deal with a JVM emulator, eh?
            (Note I never mentioned x86; there are many chips Linux runs on it would be much nicer to emulate.)

            Nokia and other phone makers are setting the trend for small devices and compiled binaries are not part of the picture.

            Then GNU/Linux is out of the picture for them. Linux may work, but it's not going to look like any Linux you use, nor is going to run the same programs.
            • >. You're going to be running a completely different set of apps.

              >>11 is the starting point, it's going to get a lot more diverse from now.

              > Why? It's ported to pretty much every chip in production that can run it.

              Nonsense. First you talk about porting apps, then about porting the OS. It doesn't matter how widely the OS is ported, it's the apps that will be separately distributed that count.

              Yes, I can confirm that PDAs and phones are already running JVMs. I can also confirm that no PDA or phone anywhere is running a CPU emulator.

              I won't bother attempting to convince you that PDAs will be running the same programs as mainstream Linux as you can find that out for yourself with a quick search in Slashdot.

              Don't bother coming back with more airy-fairy arm-waving - I'm not interested in vacuous assertions and I'm pretty sure no one else is.
  • I consider myself a pretty good Java guy. I also keep up on the theory of programming languages. Gostling mentions "autoboxing," something I've never heard of. Anyone know what that is?

    (Yes, I can use Google [google.com], but that didn't seem to be much use. Oh, but did find this googlewhack [google.com] while trying to get info.

    • I don't know for sure, but if I had to make an educated guess, I'd say he's talking about dynamic primitive-to-object conversion, as needed, or possibly vice versa (or both).

      This is similar to how Javascript handles strings... Javascript has both a string literal type and a String object type.

      var lit = "my string literal";
      var obj = new String( "my string object" );

      Now the cool thing is, lit isn't an object, but you can still call methods on it from the String class, like lit.substring(4) and stuff, just like you could with obj. This is because Javascript automatically creates a temporary object for the literal (ie, autoboxing?)

      Once again, let me state I don't know for sure what the term actually means, I've never heard it either. But from the name itself and the context of the discussion, that's what I'd guess he's talking about.

      Anyone have more of a clue than us?
    • I think what gosling meant by autoboxing is a way for the VM to convert between primitives and objects transparently. So an int can be used as an Integer and an Integer as an int without the programmer having to do new Integer(intValue) or Integer.intValue() or whatever.

      Such a feature does not exist in Java and I feel it would be useful if implemented correctly and carefully.
    • by Steveftoth ( 78419 ) on Wednesday May 01, 2002 @08:23PM (#3447471) Homepage
      Autoboxing is a process where primitives are automagically converted to Objects (and back). It's a language change so that you would have to write new code to use it. Basically you could say....
      int i = 2,j=1;
      Integer result = Math.max( i,j);
      and it would magically convert the result of the Math.max to an integer. Or if the Math.max took Integers instead of ints, it would create Integers for you.
      The details need to be worked out because as of right now, an Integer is unmodifiable and things like
      i == result
      would be problematic. Since == tests equality, but it only works with objects if they are actually the same reference. You can't do
      i.equals( result )
      Also, what if you do
      int i= 2;
      Integer j=i, k=j;
      ++j;
      If you are using object semantics, then k should probably be changed to reflect the new value of j, since j and k both point to the same object. It comes down to, should the value of j change? or the value of the object that it represents?
  • by theolein ( 316044 ) on Wednesday May 01, 2002 @10:43PM (#3447985) Journal
    Every interview I read on James Gossling, I read "how people are doing all sorts of exiting things on the desktop with it" and some other stuff such as how it is getting into "the embedded space". (what is embedded space? Did an astronaut get some vacum in abottle and bring it back with him?).

    At the same time I read how SUN marvelousy manages to fuck things up with respect to their favourite language on the client side. Granted, it is huge on the e-commerce side of things, but things like JSP are too complex for simple backend applications that are far more easily handled in PHP or ASP. The mobile market seems to like it and it might become big there too, given that ARM and others are making processor core that handle bytecode natively, but that's not yet a given.
    What stresses me is that, from the beginning, SUN mishandled Java and played into MS' hands for a number of reasons:
    1.When it first came out it became very popular very quickly because of it's ability to provide pixelated aliased dancing Dukes and and sound to web pages. However Sun never bothered to push the point and try to improve performance and load times. People got very tired of seeing pixelated images floating across the screen that took minutes in some cases to load on early modems. They just sat there on their butts and ignored the fact that AWT was hideous, ungainly, and in no way worked very well across platforms (I mean on the Mac or Unix for example) and lacked important controls.
    2.One of the things that played into MS' hands was the above and the fact that SUN made Java native interaction very difficult or at least non-trivial to implement, so that people who would have otherwise been able to make GUI controls and interface in C/C++ were put off having to slog through JNI. Along came MS with their JRI (or whatever it was called) which enabled all the hordes of MS developers to easily call MFC and other Win32 stuff directly from the classes. It was an easy picking and whose fault was it. It was or should have been obvious that MS would try to scupper anything that anyone else did (Custom ActiveX never became very popular but it did serve the purpose of making more FUD enter the arena) and the need for easy native access was defintely there. I know that it might have neccesitated changes in the security model but SUN didn't listen or was too confident or just too plain stupid when you look at the ugliness of their desktop for example.
    3.Eventually they did listen and came up with Swing, which was so slow on machines of the time (ever run the Swing demo stuff on a 223MHz x86?) that it put off many companies and developers, who just carried on using VB because it was a no contest in terms of GUI response. And this although Swing looked very good.

    Why did SUN ignore all the compaints? Why did they make native access so difficult? Why didn't they just improve AWT? Why didn't they try to look at it from a consumer point of view, which is what all those people watching the moronic applets of time were. Applets have all but dissapeared on the web and 99% of interactive shit is done with Flash today. Why didn't they try a trick from the MS book and try to implement things like the JVM starting up on boot or browser launch to make Applets start faster? Why did SUN make such a huge fuss of MS ignoring Java in XP when they couldn't even be bothered to make a marketing push for, IMO, some pretty neat stuff like WebStart?(who actually uses this?)

    MS may be an abuse monopoly but SUN has it's head in the clouds up with the bosses of big banks etc and seems too dumb to try to see things from a consumer point of view.

    (Sorry for the rant. I think they need it.)
  • What about /. interview of Gosling? Surely people
    here have Java related issues and questions...
  • Java and good design (Score:2, Informative)

    by theolein ( 316044 )
    minatrix.com [minatrix.com]

    Go there and take a look at least. It's a java gamin g site on the basis of applets. Register (horror!) and take a look at the games. There are two 3D games last time I looked and a host of single and multiplayer tetris, galaxis and backgammon knockoffs etc.

    This site is very interesting for a number of reasons:

    1.It is immensely popular. When you play a game a window of all the other users online at the time pops up, and it blew me over to be honest.
    2.The games look extremely good visually, are based on simple premises that make them adictive and are playable even on slower hardware.
    3.It works best in Explorer's MS JVM of all things. JDK1.2 Browsers are not supported well and don't even work in some cases. This raises the question as to where they will go now that MS has dropped having it's own JVM in XP?

    sumea [sumea.com]

    Go here and see what you can do with a well written ava 3D engine that needs no hardware acceleration. Take note of the site design. It makes an impression on consumers.

"A car is just a big purse on wheels." -- Johanna Reynolds

Working...