Monday Aug 31, 2009

Resumable NetBeans Downloads

Somebody asked us recently via the feedback form how he could resume an interrupted download, and whether we had any tips how to download NetBeans with slower bandwidths. In case you have a similar question, here is an overview of your options:

Your SituationOur Download Tip
Download speed: Fast, high bandwidth, no interruptions.
For example to install NetBeans for the whole team at school or at work.
Download and burn the ISO image of the complete NetBeans IDE DVD Starter Kit. It's huge (over 3GB), but it contains all installers, a lot of documentation, tutorials and screencasts in English, and many translations (Simplified Chinese, Brazilian Portuguese, Japanese, Russian).
Download speed: Good bandwidth Pick the 'All' NetBeans bundle from the NetBeans Download page. (Or choose one of the specialized smaller bundles if you are mainly a Java SE, PHP, Ruby or C/C++ developer.)
Download speed: Slow, low bandwidth.
Also known as "Remaining Time: 23517028 days"
You can pick a lightweight (26-46MB) installation bundle from the NetBeans download page. Installing one of these smaller bundles will already contain what you need for Java SE, PHP, Ruby, or C/C++ development, respectively.
If you need Java EE or Java ME support, try downloading additional modules bit by bit, via the update center. Use the resumable Sun Download manager to get the necessary SDKs.
Download speed: Average or good bandwidth, but danger of network interruptions You can download the NetBeans IDE + JDK bundle using the Sun Download Manager. The SDM allows you to pause, resume, restart, and verify the downloaded file.

Friday Aug 07, 2009

New: Custom Homepages for Kenai.com Projects, and more!

Our feature requests have been heard. :-) Did you notice the new options for Kenai-hosted projects?

As entry point, each project can now have a custom website with a nice "vanity" URL, or you can set it to show the wiki home page. You can also customize the message sent out to new members, and track statistics with your Google Analytics account.

Use the Team > Kenai > Login menu in NetBeans to create a new kenai.com account, or to access your existing projects. Click Details in the Kenai window to quickly open a project's home in the web browser (I stay logged on and keep the password in the browser keychain), then click Manage This Project. Have fun!

Tuesday Jul 28, 2009

Creating Java 3D Games with NetBeans

While taking a few days of vacation (before coming back in time for the release of NetBeans 6.7.1!) I finally got my jMonkeyEngine notes and files in order. If you don't know it yet: The jMonkeyEngine (jME) is a free and open-source 3D engine for creating 3D games and simulations in Java.

(I would have blogged about it earlier, but the project is moving servers in July... So if the links below should change again and break, search the web for "jmonkeyengine" and then search within the page...)

If you have never seen it before, these jME videos and demos show best what you can do with Java3D nowadays.

I had created a simple 3D world with jME 1.0 and started migrating useful elements to jME 2.0 -- which is well doable despite a few API changes, especially since NetBeans marks the broken lines, fixes the import statements, and I can get the new syntax from the code completion popup. Here are my notes that I shared on the jME wiki:

  • General jMonkeyEngine beginners FAQ -- Those are my questions and answers that I found. I just updated it for jME 2.0 and will be filling in more stuff as I go along.
  • jMonkeyEngine + NetBeans Tutorials -- I created this index page because I noticed that several authors had started writing jME+NetBeans tutorials for various versions! Thanks to the community for covering this so well.
  • Setting up NetBeans 6.7 for jME 2.0 -- This is my jME tutorial contribution. Maintaining the native libraries and JARs is easier now with NetBeans 6.5 (or higher). I also mention Maven briefly, and how to wrap up a whole project (JARs and native libraries!) into one distributable JAR file (using OneJar), and how to make this distributable java application startable in a user-friendly way.

There is probably more to be said about distributable JAR files, but OneJar solves my current questions. If you figured out how to get native libraries into a webstartable JNLP file, leave a comment. This blogger here has some more tips regarding JNLP signing and where to place the native libraries, so this is my next lead to investigate. But first I need to get my rusty 3D app going again--taking into account the new stuff I've been reading about programming patterns lately, suddenly my old class structure looks quite... sub-optimal. ;)

PS: updated links to stable jmonkeyengine.com URLs.

Friday Jun 05, 2009

JavaOne: Toys are Us!

And now the JavaOne session everybody has been waiting for: James Gosling's Toy Show! Here a short rundown of the coolest tech demos we saw this morning:

Angela Caicedo and Simon Ritter are back, and this time they hacked a standard household wiimote. Simon brought a small white board and attached a few markers. He used an JavaFX app to triangulate the position of the markers with data from the wiimote IR sensors. He then projected a perspectively distorted image of a playing card onto the surface, and the image stayed in place even if he moved.

When he turned the board around, the app detected the motion and projected the backside of the playing card. :) It also supported more "motion sensor"-like features like shuffling to flip to a different card. To prove that there is no hidden magic in the board, he replaced the board with an opened white umbrella (again with markers) and projected an image of planet earth.

Continuing the them of "JavaFX is for all screens of your live", Angela presented her approach to a wiimote hack: Similar to her demo from last year she relied on a Minority Report-like glove with IR markers. As apposed to Simon, she can turn any white surface (such as a wall) into a "touch screen". In her demo she projected a canvas and a color palette, and move her finger in the air to paint lines and mix colors . She could reusue existing JavaFX features to animate a ball icon rolling along the drawn line--until the line ended and the ball dropped off the canvas. :)

Next Tor Norbye demoed his new JavaFX designer tool: He placed an object node onto the canvas and recorded 3 different keyframes, then he let JavaFX interpolate the animation. The end result had the textnode swing in and bounce off the floor to its intended position.

Tor also demoed a very userfriendly interface for binding components to values: You drag a line from one component to the other, and a menu of possible target values shows up that would make sense to bind. To give you an example: You may want to bind slider's left/right side to the video's start/end position, and a toggle button to the play/pause action. of course you can do that with all components and all properties (opacity, translation, color, rotation...). His tool allows you to save visual content for mobile and PC screens (and soon also TV).

We also learned of PlaySIM, a simulated SIM card (JavaCard) on a Sun SPOT. It allows you to set debugger breakpoints in live SIM card code. In the demo they used one Sun SPOT's motion sensor to trigger the menu of a phone (which was attached via a 2nd SPOT). check out playsim.dev.java.net for more details.

The FIRST robotics league brought one of their robots from this year's lunacy game: Robots throw balls and catch them in baskets. There are different periods in the game, e.g. one with human remote control, and one with autonomous robot control. The finals were very popular and filled the Georgia Super Dome. :) The robot on stage sucessfully collects balls, but then proceeded to throw them at James Gosling... Today's news is that from this year on (?) the students will be able to program robots in Java too (including on-device debugging), not only C/C++ (if I got that right).

The big highlight for the NetBeans Community was Sven Reimer's NetBeans platform-based application: A controller used in satellite ground stations. Gosling recollected when he used to analyze satellite data with a PDP8 (?) that had less power than a smart card... :) Sven's app ran in demo mode only since "some grumpy people didn't let us actually control satelites". ;( As a final surprise, Gosling became a honorable dream team member (well, he got the shirt) and received a copy of the community-translated (!) NetBeans platform book (originally in German).

Another interesting guest was Visuvi: Not only can you upload (cell phone cam or hi-res) images to their search engine and have them analyzed (E.g. to answer the question "who pointed that?"), but most importantly, the new image analysis technology is used for cancer research (e.g. you can search through a biopsy image database for visually similar cases).

Other demos included a micro financing app, a Solaris+JavaFX powered jukebox for starving musicians, a printer-scanner for teachers that scans student's test sheets as well as the answer sheet and then calculates the score.

The last demo was a video interview with the team around the Lincoln car that was on display in the Java Pavilion all week. The plan was to create a fast-driving drive-by-wire vehicle for the Realtime Java urban challenge. And Mr. Perrone refitted a stylish Lincoln Continental: He added batteries and a generator, self-diagnostic sensors and GPS, and finanly touch screen UI. The break lights and old speedometer are controlled electronically. They showed some cars on a test drive, but, sorry, I missed whether the Licoln ended up being remote controlled or not. (Leave a comment if you caught that please)

I think this year's message was: Different communities use Java technology in different ways. Astonishing (and inspiring) what you can do! :-)

Mean Java Puzzlers, Swiss JavaFX usecases, and 3-D jME Games

While waiting for the NetBeans Platform development session to begin, let me quickly show you three other cool JavaOne 2009 sessions, and what I learned from them:

Java Puzzlers: Shlock and Awe

If you're not sure what that method does, it doesn't do what you think it does. Let the Java puzzler experts Bloch and Gafter introduce you to the pitfalls of the Java language - shlocking and awe-inspiring!

Java Technology for Gaming

The freely available Java3D game framework jMonkeyEngine solves many challenges that you will encounter when developing a Java 3D game. Learn how well-implemented collision detection and game physics add realism and immersion to your next killer game!

Technical Session: JavaFX Technology in Action: From Design Tool to Desktop, to Mobile Device

Canoo's Mike Mannion describes how his company used JavaFx to develop their Music Pinboard and then quickly migrated it from the browser to the desktop to mobile devices.

Wednesday Jun 03, 2009

Some Unsorted JavaOne Impressions

Did you see this year's nice JavaOne banners? Love the gradients and colors.

They look vaguely familiar though, don't you think?

Hm... ;-)

Cool things announced today: Blackberry, Sony, eBay, Oracle, they all love Sun, Java, or JavaFX (ranging from "respectively" to "all of the above")! There was a spiffy Sony Blueray presentation, the only thing I remember off the top of my head was this one "unique selling point" that made me laugh: "IM your friends while watching a movie!!!1!1!" Oh yeah? With NetBeans+Kenai.com you can even IM your friends as well as tweet, all while coding! Hah! Beat this, Blueray.

Seems I remember more of that demo than of Monday's general session. Someone please refresh my memory. You know, the segment where they had this mesmerizing "city lights by night" video loop in the background? Did I mention the video loop was exactly 8 seconds long? And that it was mesmerizing? o_O

(Heh. I just realized one of my colleagues here can make precisely this smilie face: o_O Very funny! Still trying to capture that on film.)

The big thing today of course was James Gosling's announcement of the store.java.com. Developers like you and I will be able to upload our Java apps, attach a price tag, and customers will be able to drag the app to their desktops to buy and install--pretty cool! You can join the beta program and vote on what buying method you prefer before the chosen one will be activated later this year. Presently there are free games like Solitaire and Runescape. But the private Beta is only available to US citizens, oh well...

Any beta store applicant here care to post a comment how you like it? (And most importantly: Did you get sucked into Runescape??) I talked to a guy after a session who said there were tags or something to specify whether your app was based on the jMonkeyEngine (and others)? Can anyone tell me whether these categories will be used used for licensing or packaging purposes?

Nandini actually mentioned the Java Store in her demo of the new visual JavaFX tools, just a few minutes before they officially announced it... I wonder whether she did that on purpose? :-P That would explain why the wireless was suddenly unusable in the hall, everyone tried to connect to tweet, blackberry, IM, skype, etc... Speaking of which, the wireless is called JavaOne (camel case), don't fall for the evil imposter JAVAONE (all caps).

Oh, and the JavaFX TV demo (JavaFX-written on-screen TV controls) memorably used the Big Buck Bunny open-source video: It's a cute short film, but the presenter was alert enough to call up a sports screen before it got to the scene where the squirrel KILLS THE BUTTERFLY!! I don't like this video. =-[ Nor can I warm up to the other open-source video, Elephant's Dream. Yes, I agree, it's extremely well done and creative, but the characters creep me out.

Oh, and I also went to the Maker Faire near San Mateo right before JavaOne, got some footage of steampunks and stuff, but no Mac/iMovie at hand right now.

Monday Apr 27, 2009

Mind Your Language, Silly!

Easter holidays are over, back to my old crazy Java 3D and 2D experiments and the fun idea I had for the JavaFX coding challenge! :-D ... Which... I of course cannot submit, since I'm an employee... :-| Oh well. All I can say is that the idea hinges on a highly advanced bleeding-edge stickfigure generator. I'll post it here if my app ever amounts to anything without the pressure of a deadline. :-P

What I like about JavaFX is how fast I learned the syntax and how much I get from a few lines of code. I looked at the sample projects included in the IDE and browsed the language overview (all tutorials) and basically whipped up my first app. I jotted down some revelations I had on the way, hope they are useful to you:

Java SyntaxJavaFX Syntax
The Java constructor needs explicit arguments, in order...
public class Pizza {
  public Pizza( int radius ){ ... }
}
... while the JavaFX constructor implicitly accepts all public variables, in any order.
public class Pizza {
  public var radius;
  public function create(){ ... } 
}
You made this variable public because you want it to be set, no need to repeat yourself -- nice.
Creating a new Java object...
Pizza p = new Pizza(16);
... versus creating a new JavaFX object.
var p = Pizza { radius:16 };
The order of arguments doesn't matter thanks to the labels. The argument type (here, integer) is inferred from the context (here, 16).
String concatenation operator in Java...
println("The pizza is "+radius\*2+"cm across.");
... versus evaluation braces in JavaFX strings:
println("The pizza is {radius\*2}cm across.");
You can import and use the classical packages such as java.io.\*...
BufferedReader in = new BufferedReader(
  new FileReader("bla.txt")
);
... but note the syntax change:
var in:BufferedReader = new BufferedReader(
  new FileReader("bla.txt")
);
Creating an JFrame application window in Java...
...
JFrame frame = new JFrame("Hello World");
JLabel text = new JLabel("Hello?");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(200,200));
frame.getContentPane().add(text, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
...
... versus a JavaFX application window:
Stage {
  title: "Hello World"
  width: 200 height: 200
  scene: Scene {
    content: [ Text { content:"Hello?" } ]
  }
}
That's it!

As you see above you still use standard Java packages for certain things (such as reading and writing files) that JavaFX has no need to reinvent since it focuses on GUI code. The NetBeans GUI Builder however does not support JavaFX yet, which is a pity. In the meantime you align GUI elements using javafx.scene.layout.VBox and and HBox and preview the results in the IDE.

When your app grows you will want to move individual javafx.scene.Nodes into classes of their own. Here's a very common pattern how to create a custom Node: The details are now defined inside the custom class and don't clutter the Stage. The return value can also be a javafx.scene.Group of Nodes.

File: Main.fx

import javafx.scene.\*;
import javafx.stage.Stage;

Stage {
    title: "Pizza Window"
    width: 200 height: 200
    scene: Scene {
      content: [
        Pizza { radius:16 } // create a new object
      ]
    }
}

File: Pizza.fx

import javafx.scene.\*;
import javafx.scene.effect.\*;
import javafx.scene.shape.\*;

public class Pizza extends CustomNode {
  public var radius:Integer;
  override public function create():Node{
    return
      Circle {
        centerX:100 centerY:100 radius:radius 
        fill:javafx.scene.paint.Color.YELLOW
        effect: Lighting{}
      }
  }
}

You can quickly compile these two files on the command line using javafxc Main.fx and then run them using javafx Main -- Or create a NetBeans project.

Another cool thing in JavaFX is binding: You bind an input element (a slider or field) to a variable, and bind the variable to an argument. For instance, the slider is bound to the variable that is bound to the image size. When the user moves the slider, the image is scaled immediately, no explicit event handling necessary! Also have a look at sequences and for-loops, these expressions are fun to use. Whoever invented these features was obviously annoyed about the same things as I. ;-)

PS:

During my first tries to compile stuff I kept getting this annoying error and didn't know what it meant:

Pizza.fx:40: cannot find symbol
symbol  : constructor Pizza(int,boolean)
location: class Pizza
             def p = new Pizza( 16 );
Note: The following error is an internal error in the OpenJFX compiler (1.1.1).

Wait a second -- My constructor doesn't even use any Boolean arguments, where does this come from? Seems that out of a habit, I created the JavaFX object using Java's "new" syntax... After I changed the offending line to def p = Pizza { radius:16 }; the compiler is happy. It would be nice if the JavaFX compiler could identify this case and just say "You're talking Java again, silly!" -_-

Wednesday Mar 18, 2009

How's Your Chinese?

Remember Geertjan & co's NetBeans platform book? It has recently been translated to Chinese and Geertjan just got his copy. :-) Seen through the eye of my year-old mobile camera, it looks like this:

(I'm still surprised every time how this mobile cam manages to distort the perspective, "enhance" the colors, and give every photo an "artistic water color" effect! You couldn't do that on purpose if you wanted to...) ;-)

So, if you like a book about the NetBeans, or read Chinese, or optimally both, get your copy here.

Thursday Feb 19, 2009

Starting With Solaris From A Linux Point of View

A few weeks ago, Arun wrote in his blog about how to install OpenSolaris on Virtual Box. Let me add some OpenSolaris usage tips that I collected over time (so if I forget them, I can go back to my blog). ;) They are intended for users who already have prior experience with Linux and the command line in general.

When I say "Solaris" below, I mean OpenSolaris 2008.11, here is how to upgrade from OpenSolaris 2008.05 to 2008.11.\*

Processes and commands

  • The Linux top command displays the list of running processes. On Solaris this command is called prstat.

  • If you're looking for one particular process (e.g. firefox), use pgrep -l firefox; if looking for processes by one user (joe), use pgrep -l -u joe. If looking for both, combine them to a quick pgrep -lu joe firefox.

  • Solaris has no sudo command like Linux's "substitute user do" to execute one-off commands with admin permissions. On Solaris, use su to 'assume the identity' of another local user, including the root user, if you know the password. In contrast to sudo, you're responsible for exiting back to your own identity. So, before changing config files, type su - to become root. Including the dash argument will also update your shell environment (most visibly, the commandline prompt will say 'root' so you can actually tell which of your shells is the root shell).

  • You install a .pkg file with the pkgadd -d name command (usually as the superuser).

  • One tip (luckily) not from personal experience: On Linux, you kill an amock running process by killing its process ID (pid); if the Linux user doesn't want to look up the pid(s), she can use killall name to kill all processes with that name: Basically a handy shorthand for grepping the process list and killing them individually.
    On Solaris, this "kill by name" command is called pkill. The Solaris killall command however, well, kills all processes, period. You might as well shutdown and discard all unsaved changes...! You have been warned. :-p

Devices and media

  • If you "insert a DVD" (using Virtual Box's ability to mount disks from the host drive, or ISO images) it will show up under /media/CDROM. I haven't tried USB media yet (probably not supported?)

  • You can get an overview of devices and drivers (disk drives, mice, network and graphic cards) from the main menu: System > About OpenSolaris > Devices. E.g. my network card driver is e1000g, so I know in the file system, my first network interface will be represented as /dev/e1000g0 (see "ipconfig" tip below).

  • I don't suggest to mess around with device tables, it's just good to know files like /etc/mnttab and /etc/vfstab in case you want to look up a device path for another config file. (Strangely I don't see my hard drive's /dev path though, is that because it's virtual...?)

  • If your audio (e.g. on a MacBook, Core Audio + ICH driver) doesn't work, get drivers from Open Sound.

  • The shared folders feature is not available for the Mac/Solaris host/guest combo. I use the network (ftp, scp, or simply mail) to get files out or in of the VirtualBox.

  • Another way to get files from the Mac Finder to Solaris: Put the files in a folder, use the Apple Disk Utility to create a disk image (.dmg) from the folder, use the same utility to convert the .dmg to a DVD master image (.cdr), rename .cdr to .iso, then use VirtualBox's Virtual Media Manager menu mount the disk image as a Solaris medium, and access it from the /media directory. Phew... If you know an easier way, please leave a comment. =-)

Network

  • If Solaris does not seem to use the network interface, check whether Virtual Box is set to use the "host interface" (for me the setting defaulted to NAT).

  • Solaris uses the nwamd demon to auto-detect and use DHCP on your network, and it even detects wireless networks, very useful. There is a Network control panel, but if you're just a user running Solaris on a notebook or PC, look for other sources of the problem before you fiddle with nwamd:

    1. Use the command ifconfig -a to see whether the DHCP server assigned you an IP address. (Hint: Look up the name in the device list (see above), e.g. e1000g0. The IP address stands next to the word 'inet'. LOOPBACK and 127.0.0.1 don't count!) If not, check the cables and whether other PCs can access the same DHCP network.

    2. If you do have an IP address but still cannot open any web pages, test whether you can browse to a web page by its IP address: Use the host command on another machine to obtain a test address. (E.g. typing host www.sun.com returns 72.5.124.61.) If the browser is able to open the web page by its IP address (e.g. http://72.5.124.61) then you know you are online - but your name servers are not configured!

    3. In this case, open the file /etc/resolve.conf and add entries for name servers. (You need to be the superuser to edit the file, see su above.) Copy the name servers' IP addresses from another machine (I got them from the Mac's Network System Preferences), or ask your admins.

More about using and configuring Solaris, for example installing it on a Virtual Box and more info on nwamd.

Read the OpenSolaris Observatory blog to stay up-to-date.

\*) This method seems to have worked for many, it trashed my VirtualBox though. If you want to save time and already have an OpenSolaris 2008.11 DVD, use that, upgrading is not faster than a fresh install.

Sunday Feb 08, 2009

Figuring Out Battlestar Galactica

(... ... ... Spoiler warning, don't read if you haven't watched at least s04e13... ... ...)

I was thinking about the scene were the four Cylons reminisce about their past. Anders says something like "I used to play this song for a girl I loved" and Tory says "You played it for all of us".

So either Anders just had a whole lot of girlfriends. Or...

He was the Cylon Bob Dylon!

Let's follow this line of thought through: First add resurection technology to the picture (assuming the 13th tribe had it). And second, doesn't hearing the words "Cylon Dylon" make you wonder what became of Aylon and Bylon...? If you combine all of that, what do you get?

Yes. Samuel Anders was a Cylon boygroup!

(I think that was about when I woke up. But it all made sense for a moment!!!1!!1!)

Thursday Feb 05, 2009

NetBeans in Wonderland (Part 2)

In part one, I talked about what project Wonderland is and where you can try out a live demo of version 0.4. Much like SecondLife, Wonderland is a 3D world with avatars and audio/text chat. But unlike SecondLife, Wonderland is open-source and more business-oriented, for instance there's live application sharing. You can use it to collaborate on projects with your team of developers in a private 3D world.

Part two is about how to set up your own Wonderland server and client. I will share an instance of NetBeans in this example, but of course you can share any Xwindows application, including the Terminal.

Prerequisites: Solaris/Linux

Windows and Mac versions of the Wonderland 0.4 server don't seem to be available yet, so presently Solaris or Linux are a prerequisite. Note that Wonderland clients (including a webstartable one) are available for all operating systems. In this example I use OpenSolaris, and the instructions should be identical for Linux.

Prerequisites: Java

Before running Wonderland, make sure you have JDK 6 installed. (Use the terminal commands javac -version to check). If you don't have javac, install the JDK 6. On Solaris, go to the main menu, choose System > Administration > Package Manager, and install the java-dev package from the Development category.

Prerequisites: Installing the Shared Application

Obviously the application that you want to share must be correctly installed and on your PATH. In this example I downloaded and installed NetBeans. Check whether NetBeans is in your PATH by typing which netbeans at a fresh Terminal prompt. If the command returns empty, you need to add NetBeans to your PATH before proceeding. Find out where the NetBeans binaries were installed -- in my system, it's in the /opt/netbeans-6.5/bin/ directory. Remember this path and add it to your config file (I use the bash shell, so for me the file is .bashrc).

ruth@sonnig:~$ gedit ~/.bashrc

Add your netbeans binary path in the following way and save the file.

export PATH=$PATH:/opt/netbeans-6.5/bin/

Reload the .bashrc configuration (in every open Terminal window).

ruth@sonnig:~$ source .bashrc

Test whether NetBeans was successfully included in your PATH.

ruth@sonnig:~$ which netbeans
/opt/netbeans-6.5/bin/netbeans

Installing Wonderland

Now it's time to install Wonderland. Go to lg3d-wonderland.dev.java.net and download the binary build (for example wonderland-0-4-0-solaris-i86pc.zip), and extract the archive.

ruth@sonnig:~$ unzip wonderland-0-4-0-solaris-i86pc.zip

Change into the wonderland directory and edit the settings.

ruth@sonnig:~$ cd lg3d-wonderland/bin/
ruth@sonnig:~$ gedit  ../my.run.properties

Modify the following lines to include your host name and IP address, and save the file. (You will have to redo that if you use DHCP and are assigned a new IP address.)

wonderland.local.hostAddress=123.454.32.1
sgs.server=sonnig
sgs.port=1139

Starting the Wonderland Server

OK, you're all set! Now it's time to start the server. According to the instructions, you run the binaries as follows:

ruth@sonnig:~$ ./wonderland-bridge.sh
ruth@sonnig:~$ ./wonderland-server.sh
ruth@sonnig:~$ ./wonderland-smc.sh

Starting the Wonderland Client

Finally, start a Wonderland client and connect to your server. The client can run on any operating system, on the same host or on a different one, webstart or desktop app, it's up to you. The only requirement is that the host must support 3D graphics. (Since my OpenSolaris runs in a virtual machine and VirtualBox cannot handle 3D graphics, I use the Mac client.) When the login dialog appears, enter the IP address that you specified above, pick any username, and connect.

Welcome to your very own Wonderland. :-) You walk around using the arrow keys. Select Netbeans from the Shared Apps submenu and find the window floating in the room. Gain/release control of an application by Shift-Left_clicking the window title. Tip: I don't know what Solaris thinks ctrl-space is, but it didn't trigger code-completion; so I'm using ctrl-\\ instead.

 
A shared application (here NetBeans) in 3rd-person view and in Best View (Shift-Right_click)

Now it's time to invite some friends over: Ask them to webstart the client, give them the Wonderland server's IP address, and have a little chat around the campfi-- um, around the IDE. Hmm. Around the IDE...? Well, it is a 3D world... What if I walk around the IDE and look at it from behind?


Behold. The far side of NetBeans! :D

The next step is to load custom 3D models (more documentation is here). But I'll wait until I migrated my stuff to a Linux machine -- VirtualBox is nice, but seeing that it takes up way over 50% of my RAM gives me fits of claustropobia. ;)

Wednesday Feb 04, 2009

NetBeans in Wonderland (Part 1)

Getting to Know Wonderland - Cybertech news reviewed Sun's Wonderland: A free open-source toolkit for building virtual 3D worlds in pure Java. Access a public Wonderland server or set up your own as a meeting point for your distributed team. Wonderland is based on Project Darkstar, a multi-user 3D world server.

Accessing the Wonderland Demo - To see for yourself, go to the education grid and click Enter the Grid, then click Sun Microsystems.
The browser opens a Java Web Start (JNLP) file. When the Java plugin asks about signatures, click Run (or Trust respectively) to continue. Your browser then downloads the Wonderland application to your desktop. (In my case the app detected an outdated Java3D installation, and gave me instructions how to remove them. I then double clicked the Wonderland app to continue.)
At the login dialog, type in any name (the demo does not require any registration), and create an avatar. The avatar is way less detailed than the ones in SecondLife, basically just hair and cloths colors.

Navigating in Wonderland - Note the View menu (1st/3rd/orbit view) and Placemarks (quick navigation). Walk and turn with the arrow keys, sidestep with Z/X, fly by pressing Q. Also try pressing numbers to trigger gestures like nodding and waving. Keep the right mouse button pressed to look up, down, left and right. The middle mouse button controls the right arm, and you use it to point at things. Walk around a bit and don't miss reading the crazy posters in the conference room!

Listening to Wonderland - The main means of communication in Wonderland is audio chat, but there is also a text chat interface. Invite a friend to webstart the client and log on simultaneously, and have a chat with him. A cool feature that you will immediately notice is 3D audio: Approach talking avatars, and their volume increases, and sounds from further away fade out. In case nobody is "home", the demo includes a couple of bots who talk about nothing but Darkstars and Blackboxes all day. :-)
The freely available Wonderland server supports interactive objects such as microphone stands (for room-wide announcements), telephones (think Skype), a cone of silence (for private conversations), and answering machines (to record and play audio). People who call into the world by phone are represented by floating spheres. Since a caller cannot navigate the 3D world (they wouldn't see where they are going), avatars in-world can help out by carrying the caller's sphere to another room, or by placing them in the Cone of Silence or in front of microphones. Pretty neat stuff. :-)

Sharing Applications - Wonderland allows you to share Xwindows applications from your desktop with other avatars. Log on to the public demo, walk around in the Demo Room, and try out the red-framed windows -- e.g. there's a whiteboard for drawing and a photo browser. Shift-left_click the frame to gain control over the application, then shift-right_click to move the camera to an optimal position. All keyboard input will now be sent to the shared application. Shift-left_click the frame again to release the application, and press escape or C to reset the camera position. Live application sharing, now that's something that Second Life doesn't have, eh? :)

Sharing NetBeans? - Why am I posting this in the NetBeans category? Can I stick my instance of the IDE to a wall in the 3D world, and my colleagues' avatars can use it as if they were standing right next to me?
Yes! Note however, although there is a NetBeans menu item in this demo, it is not active. Bummer. Those heartless people run the Wonderland server on a machine with no NetBeans installed! :-/ But setting up a local instance of the Wonderland server is easy, and if I run the server on Solaris or Linux, I can share apps such as NetBeans myself... Hm...

What will NetBeans be like in 3D? Will I be able to do code completion and window undocking? And will I be able to see NetBeans from behind? :-o Read part two of this blog entry to find out!

Wednesday Jan 28, 2009

Let's All Switch to ASCII Video

Quick free-form poll: For learning, do you prefer...

  • ... visual screencasts or textual tutorials?
  • ... screencasts with audio? With call-outs? With captions?
  • ... short and simple clips? Extensive video trainings?
  • ... screencasts with transcripts? Tutorials with embedded clips?
  • ... more linkage between related tutorials / screencasts / sample code?

I prefer text over video, unless it's a clearly visual topic (say, GUI builder) where only a screencast makes sense. I also know that non-native speakers of English prefer screencasts because they see what happens and don't have to follow the words.

I usually have more patience watching a short clip than an hour-long video, often they proceed at a faster or slower pace than I, which can become annoying. Similarly, I prefer videos with call-outs/captions/transcripts over audio-only, because it lets me read at my own pace. Not being dependend on the audio track also helps with speakers' accents, or in a busy environment (office).

Obviously, adding a transcript of the audio track increases production time (less time for other tutorials to be written), and recording audio takes longer than writing simple call-outs. So be careful what you wish for: Do you rather want content in an optimally accessible format, at the cost of it covering fewer topics? Or you don't care about the format, it can be txt or screenshots, just as long as it covers the whole spectrum of the technology you're learning about?

PS: Do you know the ASCII art library (AAlib)? It converts video to ASCII text. Just in an... unexpected way... :-D

Thursday Jan 22, 2009

100 NetBeans Tips and Tricks (ebook)

Since the ebook announcement rolled off the netbeans.org front page now (watch out for the contest coming soon), and since people have been asking, here another quick plug ;-) for our latest ebook, 100 NetBeans Tips and Tricks. Yup, it's the same book that was given away to attendees of the NetBeans Day at JavaOne last year; that makes the print version so rare, you can't even get it on Ebay. ;-P

Wednesday Jan 21, 2009

Kostenloses Java-EBook (Neue Auflage)

Die achte Auflage des Java-Kurses "Java ist auch eine Insel" ist draußen: Ein praxisorientiertes Buch nicht nur für diejenigen, die beim Brennball in der Schule immer als letztes gewählt wurden! (He... woher weiss der das?)

Das Buch erwähnt (empfiehlt) auch IDEs (z.B. auch den NetBeans GUI Builder), bleibt aber insgesamt Tool-neutral. Das hat den Vorteil, dass man das Gelernte überall einsetzen kann -- und welchem IDE-Menüpunkt das Beschriebene eventuell entspricht, findet man recht schnell raus. Anscheinend ist geplant, die achte Auflage nach und nach für JDK 7 zu aktualisieren.

Für 50 Euro bekommt man das komplette Buch auf toten Bäumen ausgedruckt -- plus eine DVD mit JDK 6, NetBeans, Eclipse, Beispielprogramme, Aufgaben und Lösungen, und sogar (hä?) ;) ein paar C/C++ Openbooks.
Das Javainsel-Ebook ist kostenlos online, und es gibt's es auch als 14MB Download zum Mitnehmen.

About

NetBeans IDE, Java SE and ME, 3D Games, Linux, Mac, Cocoa, Prague, Linguistics.

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today
News

No bookmarks in folder

Blogroll