Home > Java > The Man Who Brewed Up JavaThe Man Who Brewed Up Java Eugenia Loli 2005-05-04 Java 36 CommentsJames Gosling sees new uses for the programming language he created 10 years ago, such as making his home-entertainment system work right. About The Author Eugenia LoliEx-programmer, ex-editor in chief at OSNews.com, now a visual artist/filmmaker.Follow me on Twitter @EugeniaLoli 36 Comments 2005-05-05 12:39 am I found this part to be most interesting:Q: I understand you’re a big Apple Computer (AAPL ) fan. Is that right?A: I have a bit of a love-hate thing with them. I’ve got half a dozen Macs at home. I use one as my DVD player, and I travel with a Mac laptop. I think they do really nice designs.But trying to deal with the company is so hard. Everything is a secret. They don’t tell their partners anything. We’ve been trying to cooperate with them on Java, but there’s not much we can do, since the cult of secrecy makes it impossible for anyone over there to tell us anything.I’m what you might consider an Apple fan. Since purchasing my Powerbook I’ve been quite taken by the product and am eagerly learning Obj-C and Cocoa. It does bother me sometimes though how hush-hush Apple keeps their developers. I’d really like to see developer blogs from Apple (More than just the bloke who works on Safari). I think this sort of secrecy is what is hurting Java on the Mac platform. Apple needs to realize that they need to offload some of these responsibilities eventually or they’ll be crushed under their own weight. 2005-05-05 1:01 am I’ve written a couple swing windows/osx apps,and then the same apps in .Net.You’d better check you screen.Java Swing looks BETTER then the .Net output. 2005-05-05 1:28 am BusinessWeek has some weird thing going on with Sun right now. Just a few days ago, they circulated a rumour that McNealy was going to take them private. As for this article, it’s recirculating the misnomer of Java being write once, run everywhere. Yes, there’s a Java VM for Linux, OSX, etc, but they’re hardly interoperable. Second, expanding on the first idea, there are so many damn VM’s out there, including the different versions for different platforms, J2ME, MIDP, CLDC, … then every vendor has their own implementation, J9, CReMe. Except for the syntax, these are vastly different from the standard JVM. Lastly, 80-90% of desktops are Windows (granted, there’s Win 98, ME, 2000, XP), 70-80% of Mobile devices run Symbian. but I wonder what is Java’s goal in achieving interoperability. How are they defining success? 2005-05-05 1:40 am You’d better check you screen.Java Swing looks BETTER then the .Net output.Haha, that’s a good one. I guess Sun can now quit working onhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4726365since everything is alright according to you.Let me guess, you don’t have an LCD. 2005-05-05 1:44 am And I guess SWT/JFaces was just something for IBM to do to pass the time. Hell, to my knowledge Swing still doesn’t pick up the native look-n-feel automatically, but defaults to Metal.Swing is fast enough these days, but it still looks like crap. I still can’t believe that it didn’t make it into 5.By the way, head on over to javalobby.com to read some of the interesting Swing/SWT discussions. I think there’s a current one brewing right now. 2005-05-05 2:11 am am using a lcd monitor, currently working in netbeans 4.0 so whats the fuzz bout the fonts?In order for swing to pick up the native lnf, you just need to plug a few lines of code. You can also use different skins too !! 2005-05-05 2:40 am Java’s anti-aliasing of text leaves much to be desired, especially on LCDs that benefit from subpixel anti-aliasing.. Simply set a Java program to use the same font as some other editor, and then compare the text in both. Now go and turn ClearType off in Display -> Appearance -> Effects and ‘Apply.’ Now compare. They look quite similar now, don’t they? Similarly bad. 2005-05-05 2:50 am well i do work in both lcd and crt monitors but didn’t noticed anything different, I always have cleartype on.. so I take it there gonna beautify this on the next release 2005-05-05 3:35 am Java swing applications look like crap and that is a know fact for years. Instead of just saying this fact (accepted by sun as beeing a bug) is untrue, why don’t you put a screenshot of your java swing app that is better than any of gtk/qt/windows native/mac osx native/be os native programs. Maybe even put then side by side and let us compare. Because I and maybe even sun developpers are really wanting to see this. Maybe even putting the “magic” code online for us to see. If not, stop telling empty lies. thanks 2005-05-05 4:47 am What other languages had javas features when Gosling was creating it ?Weren’t there alot with garbage collection ? Security ? Bounds checking ? 2005-05-05 5:48 am Really, am I the only one who is not that excited about Cleartype?Select any font that is not Verdana/Tahoma/Arial/Trebuchet and you get ugly rendering. Bitstream Vera looks nowhere as good with Cleartype enabled compared to Cleartype disabled, and cannot even compare to Freetype or Swing’s Antialiasing (yes, I have used it). Vera is not the only font that suffers.The only reason that I have Cleartype enabled right now is because the Windows font rendering engine has a lot of problems dealing with Vera when Cleartype is off (washed out rendering), so now I get malformed glyphs (‘W’ is especially bad). Vera is not the only font that suffers. Courier New doesn’t even has black strokes on Cleartype. Georgia and Lucida Sans could look better. I ended giving up on Nu Sans.Sorry, but right now, I will take MacOS/Freetype and even Swing’s antialiasing over Cleartype, especially at 10 points and under. 2005-05-05 5:58 am …considering that Swing on Windows and Linux looks like assI thought you said Swing didn’t pick up the native look-n-feel.😉 2005-05-05 7:10 am For those of you that don’t know any difference, L&F is a separate issue from rendering text. And no, you shouldn’t have to write any code to enable it. Tha’s ridiculous. But in Sun’s infinite wisdom, they thought Metal was a good thing. 2005-05-05 7:36 am It’s difficult to believe desktop Java is a serious attempt. During the last years I occasionally had to use several Java apps, but thestory was always the same. Huge download (Java VM), ugly look and the application eats up all available memory and crashes after several minutes of use.May be somebody finds entertaining developing cross platform applications ignoring all system services except the PutPixel() function. But you need a substantial portion of religious blindness to overlook the sad fact that nobody is going to use them until forced.It’s time to invent something better. 2005-05-05 8:42 am “It’s time to invent something better. ”Like Mono (-: 2005-05-05 9:34 am @ EricWhat other languages had javas features when Gosling was creating it ?Weren’t there alot with garbage collection ? Security ? Bounds checking ?Ada had security, bounds checking also, and this much before Java. Assertion mechanism and all.True enough, real OO concepts were really out in 95, but Java only took off around that year too. 2005-05-05 10:45 am I’ve used Java desktop apps. They work fine. Yes, they do use quite a lot of memory. Yes, they do take a while to start up. Yes, you do need to download the Java runtime (once) before you can use them.But .NET is no better. .NET apps also use vast quantities of memory. They also take ages to start up. And you need to download and install the .NET runtime before you can use them.So why is Java considered bad, but .NET is revered? You have the exact same problems with either platform.Most of the problem is that most people have absolutely no idea how to write decent software in a language like Java or C#. It’s quite possible to write apps that don’t use a lot of memory, that run quickly, don’t crash, and so forth. It’s just that desktop apps in either language tend to be quite badly written. You can’t go at it like you’re writing in C++, because you’ll just end up with a big, slow, buggy mess. 2005-05-05 10:48 am I like Java and I want to say that it is best programming language at now and will be in future. If you create application in Java and optimize it correctly it will work more faster.I am using Java and I am happy with it. There are things which are need to correct but they are not so many. 2005-05-05 11:03 am – The default look and feel on Windows is Windows.– The default font’s for component is dialog, which is very small( 8 pt at least ) on both java and .net.– I use Monospaced, a larger thicker font for my JTextArea’s.– In JTextArea I can set insets’s( a border of whitespace ) around the text so that it doesn’t bump right up, and hit the border, unlike windows where text does hit the border.– In swing you get resizable elements automatically, which allows a windows set of elements to grow and shrink with the changing size of the window.– Windows in .Net are still set up for x, y positioning as the default and they doen’t expect the screen to change, as the default. 2005-05-05 12:06 pm almost all of the swing problems is cause by developers running cpu-intesive task in the event-dispatcher thread, learn to use threads or the swingworker, and u’ll notice a big increase in performance, am currently working on a scientific base app with loads of computations.. and java is fast, am coding in netbeans 4.0 and i usually have a number of windows open including itunes and azureus. and am using this on a 512 mb ram with shared video memory, on a centrino 1.7 2005-05-05 12:48 pm But as for the other complaints, some stuff currently is fixed in the mustang builds (download them from java.net)first of all, there was a huge improvement of the psychological perceivement that Swing is slow, by fixing the rendering pipleline to a better double buffering system, the grey boxes now are gone which helps a lot. You can see that in the menus, while windows needs almost twice as long to open a menu there is still the effect that swing is slower, windows simply fades the menus in, swing pops them up.The fonts in mustang now are handled correctly, what is still missing is a proper menu integration and some layouting problems in the file dialog, but mustang is moving rapidly towards a close to perfect windows integration.All I can hope is that Mustang will also soon contain the shared VM stuff, which Sun is working on currently in their spanisch research lab, that will help with the memo footprint even more.As for the long loading times, I said that often and I will say it again and again, Sun is tackeling the wrong area there by trying to fix it on the VM side, 90% of the loading times of a client app come from the ressource loading side of things, every resource and there are hundreds of them in the typical app, has to be unzipped from the jar file and then loaded and interpreted, which happens several hundred times during loading, moving that stuff to a compound memory dump probably would reduce the resource loading time by the factor of 90% because all the unpacking and loading would happen only once. 2005-05-05 12:48 pm We just finished a 3 month project for an international company who wanted us to use Swing. It was my first time using Swing (long time server-side Java coder) and I must say it was a very pleasant experience.The application looks great with JGoodies, is functional, but more importantly the project was a success.Here’s how the ram usage breaks down on my machine:Eclipse 73Firefox 70Thunderbird 43Word 30Our Java Swing APP 28iTunes 15Acrobat 12….28 megs ain’t bad at all for an application that will run on multiple platforms, has a quick development time, and looks just fine! 2005-05-05 1:06 pm Java is all about plain OO (or at least it tries to be), .NET is component oriented. They are very differing principals; realize this and what they actually mean before you start bashing either or why they do something some way.If you’re a pattern and ‘best practises’ copy-and-paster, then you likely wouldn’t know the difference between OO and CO. And there are far, far too many of these kind of people around in Java doing it without thinking about what or why. 2005-05-05 1:55 pm Could you please exemplify your assumption that there’s a big difference between java and .net, where java is OO, and .NET is CO ?Java and .NET are exactly the same thing. Highly object oriented languages running on a virtual machine, with many services provided by it, such as stack tracing, array boundaries checking, and so on, that makes the platform much safer than lower level code.OO and CO are not different things. They actually complement each other. OO languages are a great way of building component oriented frameworks, and if you’re an experienced developer, be it java or .NET, you’re probably working that way.And no, I’m not a “copy-and-paster”. I actually have my SE master degree. 2005-05-05 2:04 pm My favorite language is C. It’s powerful, and since that power must be handled with care, it makes life interesting. It’s like working with plutonium or designing roller coasters.I set out to make a (yet another) chat system, and I decided to code it in C for the server and use Java for the client. Man, it was a bliss!! I had a basic yet full featured applet working in a couple of weeks (check it out at http://pailachat.pachesoft.com . It’s just a demo, and it’s in spanish).Java is very easy to learn Java and you can have stuff done quickly on it. 2005-05-05 2:30 pm Is merely just some kind of marketing hype, a component more or less is just a an object with some runtime information, nothing that is different than a class and introspection.CO was a neat marketing hype of the late ninteties but it just was another word for things which every decent OO language had way before and called them simply classes.And yes there are more sophisticated component models like Corba, but they all boild down to have a specified access mechanism within the object domain. 2005-05-05 2:39 pm Here’s a screenshot of a program called Imagery written with Java Swing.http://www.xerto.com/images/screen-shot.pngLet’s just stop getting over excited on this issue. Java *can* look different by using Java’s default Ocean l&f which most people consider inferior to native l&f’s. I can agree with that. So let’s use other l&f’s which can be easily enabled in your code with very little effort. In fact, you can specify l&f from the command-line, as a user without having to modify any code whatsoever. 2005-05-05 4:38 pm its hard to argue with non-developers who used a swing applet five years ago and found it to be slow. like everything else in java, its gone through its growing pains, but its more then fine now, and will (hopefully) be great with mustang. 2005-05-05 4:52 pm As well as the Imagery program mentioned above, DB Visualizer is also another good-looking Java application: http://www.dbvis.com/products/dbvis/screens.htmlJava is a perfectly good solution for bespoke desktop applications, even commerical ones (though a desktop full of Java apps still requires a lot in terms of memory).It should also be noted that Java isn’t the only platform not to integrate the Windows Font engine, the same applies to Delphi and C++ Builder. In fact, there are quite a lot of apps out there that don’t use it (other than the big ones).The one issue against Java is the lack of a decent GUI builders. A lot of builders (e.g NetBeans, the Eclipse VE plugin) try to represent GUIs in code, which is a very poor medium for that kind of information. A better alternative is to use something like SwiXML to represent the GUI in an external XML file and have your class contain the Controller logic. 2005-05-05 4:57 pm Actually, I just remembered, Intelli/J comes with a really good GUI builder. Can’t remember if it uses Java or XML to represent the GUI though. 2005-05-05 5:40 pm “Java and .NET are exactly the same thing. Highly object oriented languages running on a virtual machine, with many services provided by it,”Except that Java runs anywhere– .Net is tied down to Windows and is; therefore, essentially worthless. And of course, .Net is MSFT spaghetti code.As for Java: The Java apps I like (NIH Image) are slow to launch but work well. I like them. 2005-05-05 5:51 pm Same here 2005-05-05 6:02 pm try intellij idea. the visual designer is very new, but it supports both xml and code based gui design styles. not to mention that its the best ide i have ever used by a significant margin. 2005-05-05 6:19 pm in general, microsoft code is extremely good (as you can see from the win2k code that got leaked awhile back). the problem with microsoft development is that it isnt focused on technology, its focused on marketing. the reason that everything is so tightly coupled is purely political, and the really ugly hacks that are in their codebase tend to come from external requirements, such as backwards compatibility. the real ugly technologies (like activex) have more to do with “we need something now to push technology x out of the marketplace” (aka time constraints) then bad coding. the huge amount of security holes are more that certain parts should have been re-written when the internet exploded the way it did. you cant blame the developers when the origional requirement was a corporate network.critisize microsoft business practices all you want, but they have had some of the best minds in the field on their payroll for decades now. 2005-05-06 12:37 am I love Java. Been using Netbeans 4.1 and my gosh it is a boatloads better than the 3.6 version! Kudos to the development team. It is a behemoth of a Swing app and one of the best Swing examples I can think of. It has some quirks though, I think there are some memory leaks in that huge app. Anyway, the point of my post is Java Swing is very easy to learn, very OO (duh) and if you know what you are doing you can make some brilliant looking very powerful GUI (check out JGoodies) and things are just getting better and better. .NET is absolute bs in my opinion completely copied from the J2EE platform.As for performance with Java apps, the main thing I can say is people get your thread programming skills sharp. A GUI in Java needs to have a lot of threads. And with those threads, there is no way anyone can talk about Swing being slow and so on. Threads are key. And there are a lot of awesome new Garbage Collection and Profiling tools that you can use in the Netbeans IDE or thru the command line itself.Anyway Java is amazing as I have said before already and yes it does have its shortcomings but the main thing is that the community is listening and addressing those issues one by one. I also realize that Java is not the language to use for everything. It is sort of like using a cannon to kill a fly!! At those times I am in no doubt, Python is the best language.I am looking with anticipation to the final releast of JDK 6 (Mustang) and Netbeans 4.2 which apparently is gonna have some GUi building features that is gonna blow us all away! I cant wait! These are great times indeed for Java enthusiasts. 2005-05-07 2:44 am I love Java. I’m using Java from 2000 until today. Very powerful language. I’m using Java to develop MediNET (http://www.medinet.com.my). It’s running very well until today.