Thursday, June 30, 2005

Native Linux World of Warcraft Petition

In looking for ways to make World of Warcraft run on my new smoking Ubuntu linux machine I ran across a petition that will be given to Blizzard in an effort to get them to port WoW to linux. If you are a WoW fan like me and have 5 seconds, please sign this petition.


Petition

Trolltech's QT 4 Released

June 28, 2005 - Trolltech launches QT4 along with a duel licensing scheme for Windows. QT was originally only offered as GPL Open Source under X11 and Mac. Now QT is available under GPL Open Source for Windows users.

Official announcment and downloads can be found here.

Tuesday, June 28, 2005

Java Gaming on the Desktop Could Be A Good Thing

I'm not a big gamer and the games I do play have to be pretty darn good. I have been playing World of Warcraft since it was in open beta and can't get enough of that. It runs on Windows and Mac. I was impressed that they released a Mac version. It's about time OSX starts getting some popular ports so those guys and gals can spend some money as well. :)

I have never owned a Mac and with the change to x86 I am leary to go out and buy a new one right now. But I do run Linux. Not because I hate Windows or anything but because for a developer Linux has everything I need and more. And it is free after all. Don't get me wrong, I have no problems paying for good software. Espeically good games like WoW. But the linux world is really hurting I think. There are a lot of reasons why games just won't work on Linux. The most obvious is most games written today are written for Windows and therefor use DirectX which Linux doesn't really have. And for some reason not a lot of people are developing commercial games in pure opengl. But I am not real sure why.

Ok, where does Java fit into all this rambling? I see Java as a good future gaming platform. Right now there are some pretty good API's like LWJGL and JOGL along with some Scenegraphs like Xith and jME which use JOGL and/or LWJGL. They are still pretty young in the grand scheme of things but I think in a few years we could see a shift in what language major games are being developed in. I know all you die hard C++ fanatics out there will disagree. In fact one of my best friends will argue till the day we die about how C++ is better than Java. But that's not really what this blog is about.

I think portability is going to be a major attraction to the gaming industry in the coming years. WIth OSX on the rise (maybe) in popularity and with Linux distros like Ubuntu getting better and better, more people are going to want to run their favorite apps on the OS of thier choice instead of running the OS because the app requires it. This is where Java fits perfectly. Yes, there are some good C/C++ multiplatform tools out there. QT, SDL, Ogre to name just a few. I've used all 3 and they are good. But you still have to be really careful when developing in these as to what OS you are really working on. Java on different platforms, so long as there is a VM, just works. Plain and simple. C++ works, most of the time. Compilers really differ. And that is the big difference. The compiler. You still have to compile source code for the various platforms. And that isn't always fun.

WIth the opengl wrappers for Java like JOGL and LWJGL there is still compiling for various supported platforms for the native libraries. But these are compiled and tested and done. You just use them and all you care about is Java.

I don't think Java is quite there in terms of what API's are provided for gaming. But it's getting better. Puzzle Pirates is a recent success story. A MMORPG written in Java and was picked up by a commerical distributor. And there are a few Java games on the shelves at Best Buy if you look really carefully.

True platform independency, ease of distribution via Java WebStart, a great community; all these things could make Java the new gaming language in the near future. I wouldn't mind that so much.

Ubuntu - A True Pleasure

I have a Dell Inspiron XPS laptop. It's a P4 3.4GHz machine with 1 GIG of RAM and it has an ATI Radeon Mobility 9800 with 256MB. Not a bad machine. I have really enjoyed it. Well, I've enjoyed running Windows on it. I've been trying for 6 months to get a Linux distro to run on it. The major hurdle? Video. About the time I bought it was when ATI was just releasing their drivers for linux for the 9800. Problem is they were never really designed for the mobility card and they suggest getting drivers from the computer manufacturer. Uh, Dell don't do dat.

I tried Mandrake, Fedora, Debian, and Gentoo. All of which installed rather easily (well, not gentoo but I still like that distro) but I could not get video to work with any of them. And I'm not talking 3D acceleration. Plain old show my desktop video would not work. It was so frustrating. So I gave up for a while.

Yesterday I got to work and went to Distro Watch to see what was up and coming, what had been updated, etc. I noticed Ubuntu recently released another version. I went to their site and did some reading. It seemed that from the forums people were having success getting video to work with the same hardware I have.

Ubuntu is built off of a Debain core so all you need to download is a single CD ISO. The CD installs the base system, kernel, and a few other goodies to get you going. Everything else you need is done using apt-get or their nice GUI interface for apt-get, synaptic. I downloaded the CD, created the CD image, and started the install process. The install is all text based but it is still really simple. The only part where you might have questions if you are new to linux is drive partitioning. Although you can automate that but I was dual booting so I had to customize the partitions a bit. Hardware detection was all automatic. The install was done in a hurry and it ejected my CD and asked to reboot. No questions about video or anything. I thought "Great, going to have to jack with this manually". It booted right into a nice GDM where I logged in and saw the nice, clean Gnome desktop. And at the correct resolution, 1900x1200.

I was in utter amazement. Video worked just like that. There was still a problem though. My 3D acceleration wasn't working very well because it was still wanting to use some basic ATI driver and not the fglrx drivers that really sing. After a bit of searching on the Ubuntu Forums I was able to fix this problem really easily. 3D acceleration and opengl support work flawlessly.

A few other notes:
------------------
Desktop - Ubuntu uses a customized Gnome by default. You can install any other desktop you want. There is even a KDE Ubuntu project called Kubuntu that I installed and it works great if you are a KDE fan.

Multimedia - I had to install some additional drivers and codecs to get DVD and MP3 support. Not a big deal as Ubuntu makes installing additional software a breeze with apt-get.

I still don't have my linksys wireless PCMCIA card working. Word in the forums is that my card worked after some driver installs using ndiswrapper with the RC of the latest release. After the release was made final it doesn't work anymore. So I am still working on this. But I can run wired just fine.
I went to Best Buy tonight and bought a Netgear WG111 Wireless USB Adapter for my Tivo. I noticed this card mentioned on the Ubuntu forums so I gave it a shot and now I am editing this post from my Ubuntu Wireless system. Wahoo!! (I also installed Unreal Tournament 2004 and it runs even better than it ran on Windows, but that is another blog)

Ubuntu has a 6 month release cycle so every 6 months they offer a new distribution. Current users can simply upgrade their current release with apt-get, kernel and all.

Software packages using apt-get are based on links in the repository of where to find the software. You need to add additional links to the list so that apt-get can get more and newer software. This is as easy as editing a file and adding the links though.

The Ubuntu Guide is the best place to go right after installation. Just go down the list and do what it says to get what you need. Including how to add those additional resources for software.

Sometimes software versions won't match release. What I mean is accoring to Help->About on Mozilla Firefox I am running versino 1.02. 1.04 is the latest. Questioning this in the forums I was told that although the versions don't match all the patches in 1.04 have been applied to my 1.02. Good enough for me.

Friday, June 03, 2005

Generics and EFL Save Me Code

I know that Generics and the Enhanced For Loop have been blogged to death but since I just now really started using them here and there I just wanted to publically state my thanks to those Sun guys that improved the language for me.

The old way:
-------------


for(int i=0; i<workstationlist.size(); i++){
list.add(new SelectItem(
((Workstation)workstationList.get(i)).getId(),
((Workstation)workstationList.get(i)).getWorkstation()));
}

The new way:
--------------

for(Workstation w : workstationList) {
list.add(new SelectItem(w.getId(), w.getWorkstation());
}


Gotta love it!

Thursday, June 02, 2005

SwingX Needs JDNC

I was playing around with some of the projects in the SwingLabs today. I started trying to get the JXDatePicker to work and I kept receiving a NullPointerException on an ImageIcon. I thought that was strange. I had the SwingX JAR in my classpath.

I started looking on the JavaDesktop Forums for answers and I noticed that all the JXDatePicker questions were in the JDNC forum. So I took a chance and downloaded those JAR files and added those to my classpath and now my JXDatePicker works.

Thought this might help someone else out. Took me a while to figure it out. Maybe I am just slow. :)

Wednesday, June 01, 2005

Java Studio Creator: Not The Same Code

I posted this over on Javaranch earlier but wanted to get some feedback from those that might not visit us over there. Here is what I had to say:

So I downloaded JSC today to give it another whirl. The last time I tried it was when it was still an RC. Ran decent on my 3 GHz with 1 Gig RAM but still not up to par with IDEA or Eclipse. I excepted this though since it's based on Netbeans and Netbeans is still creepy crawly even on good machines.

Performance aside, it worked fairly well. I was able to create some basic forms and throw some navigation in there and move from page to page. The issues I had came when I started to look at the generated code. Hardly any of it follows the guidelines/practices that are taught in books. I'd asume this is because in the books we aren't using an IDE. But it is still interesting.

For example, I've always considered it best practice to load a dropdown list via a getter method in the backing bean that loads the list and binds it to the dropdown component. When I look at the same code using JSC this is all down in the constructor of the backing bean.

Another interesting note is how you are taught in books to create getter and setter methods for the values of the components. So for a login form you'd have

private String username;
private String password;

and then getters and setters and in the componet you would specifiy the value accordingly. In JSC it uses all component binding. So you call getValue() of the component instead of getUsername() or whatever. Not that this is a bad way, just different than what is generally taught in books.

I realize you can't expect IDE generated code to be as neat as what you write yourself but it would be nice if the things you learned from reading the books on JSF carried over to the IDE that just so happens to be made by Sun who just so happened to create the JSF specification.

So who's breaking the rules? Hand coders or the IDE?


Moving My Blog

For a while now I have been mainting a weblog at http://radio.javaranch.com/gthought. Recently I have been getting so bogged down with comment spam I thought I'd move my weblog over here and see if that subsides.

I'll be attempting to move my blog entries from radio over to here so bare with me if you visit and things seem a bit out of order.