Java Inventor: Making Learning Java Fun
Java Inventor introduces itself as an IDE for education, that makes rich Java development and deployment easy for anyone. It promises to reduce the learning curve for Java developers. With these great aims, I spoke with Jeff Martin, the man behind it all, to find out more.
DZone: Hi Jeff, could you introduce yourself please?
Jeff Martin: I'm CEO, lead engineer and chief bottle-washer of ReportMill Software. We've been making visual developer tools for Java for 10 over years, including the successful ReportMill reporting system and two others: the "Ribs" Interface Builder for Swing and JFXBuilder, the first JavaFX visual designer. Before that, I worked for Apple (and NeXT) - which is where I acquired an interest and expertise in graphics, UI and visual design tools from a remarkable group of people.
DZone: What did you work on in Apple? What was the Apple experience like?
Jeff Martin: I primarily worked at NeXT in the 90's, prior to the Apple acquisition (think Steve Jobs in exile and those fabulous black computers). It was an amazing place to work - filled with bright, inspired and motivated people building some of the world's most finely crafted and elegant software. Most of Mac OS X is a repackaged and evolved version of NeXTStep. One notable characteristic about NeXT is that most frameworks came with visual design tools. For desktop UI there was the Appkit/InterfaceBuilder. Databases had EOF/EOModeller. And, for the web, there was WebObjects/WebObjectsBuilder. Unfortunately, the norm in Java seems to be more on arcane configuration files.
DZone: Could you describe Java Inventor please?
Jeff Martin: Java Inventor isn't just another Java IDE - instead it's a Java "Application Platform". Steve Jobs once revealed that Apple's secret weapon was owning the whole stack, from the network to the glass. Java Inventor follows this model: files and data are saved in the cloud (with Google App Engine). They are created with integrated design tools for many file and data types (graphics, Swing, images, PDF, sound, data tables and more). Files are accessed and shared through the community web site (http://www.javi1.com). And, finally, they are executed inside a unified runtime environment called the "Javi Browser", as an applet or desktop (Web Start) application.
In simple terms, this means you can create a new file and deploy it to the world with just a few clicks. But, more importantly, it means that you can create and deploy rich internet applications that have graphics, media, app controls, data tables and more without having to learn a whole host of technologies like HTML, CSS, JNLP, FTP, SQL, Java2D, JDBC, Swing, code packaging/signing, web/app-server configuration/administration, and more.
DZone: What is your big motivation for writing Java Inventor?
Jeff Martin: I want to make Java fun. When I first learned to program, it was possible for a novice to write a relevant application (it was a simpler time :-). But the bar is higher now - applications need to be graphically rich, internet enabled and data aware. I want to create an environment that helps people write applications that are useful, appealing and fun, without having to spend years getting there. And I'd like to use this environment to teach my kids and others to program. And to love it!
DZone: How does it compare to other educational offerings like BlueJ or the Eclipse IDE4EDU project?
Jeff Martin: We're still in barn-raising mode - so in many areas we don't yet fare well. Right now it's easy to create graphics pages, Swing panels, data tables, sound files and more. And it's easy to attach some Java code and deploy instantly to the world. We'll need another few months to create some real code editing features: code completion, click-to-source, click-to-javadocs. And another few months to add a usable debugger. On the plus side, other educational IDEs don't sport our emphasis on graphical and visual design. Or our ease of deployment.
DZone: Taking those IDEs into account, as well as NetBeans and Eclipse, I guess you've found the Java IDE market is a difficult one to break through in?
Jeff Martin: Fortunately, we don't really need a revenue stream for the immediate future. So we can keep trying to leave our mark without having to worry about instant success in the market place. I'm confident we can eventually find a niche with students and hobbyists. And maybe some people like me who would like to pass on their passion for software development to their kids. There may be commercial opportunities later, for companies that want to deploy an "in-house Java Inventor", or premium subscriptions, services, an app store or in-app advertising (since the player is somewhat like an embeddable YouTube player for Java apps).
DZone: How does it make learning Java easier?
Jeff Martin: Here's a simple example: You can draw and instantly deploy a spinning, 3D "Hello World" with a drop shadow in just a few seconds by drawing the scene, and hitting the "Run" button. Now that's not strictly "Java Programming", but it's the kind of instant gratification that keeps a student's interest and makes them feel like just maybe they can do something interesting and share it with their friends and family. Beyond that, Java inventor makes it easy to attach code to add behavior to these graphical files. And the code editor has a "Code Helper" that lets you drag and drop methods and code blocks. And the "Javi Browser" runtime environment makes it easy to stitch together and navigate between a number of these pages and screens to compose a meaningful application quickly.
DZone: Has the IDE been set up in any educational institutions yet?
Jeff Martin: Not yet. Our announcement to Java Lobby last week was undoubtedly premature. We were (or I was :-) hoping to get some early feedback - and maybe find some like minded people or benefactors.
DZone: The "easy graphics" feature is very interesting? So how does all of this work in the background? Is there just a whole pile of code generators?
Jeff Martin: Java Inventor's vector graphics support surprisingly straight forward. Consider the way Java already has integrated support for standard bitmap images (JPG, PNG, GIF). It's easy to load images and add them to a button or label or draw them to the screen. In this same manner, Java Inventor treats the "Javi" vector graphics format as a first class citizen. So referencing a Javi page is as simple as referencing a URL, or loading a Javi image is as simple as a single API call. Couple that with the embedded Javi graphics editor, and developers now have the ability to quickly add stunning graphics to their applications. And the list of Javi graphics features is impressive: vector graphics, rich text, image effects, gradients, textures, arbitrary transforms, animation, sounds, 3D, morphing, and more.
DZone: Could you share some architecture and implementation details?
Jeff Martin: Here's a fun implementation tidbit: all of the UI in Java Inventor is made up of UI files designed using the Swing designer inside Java Inventor (complete with data binding). And the UI designer in Java Inventor is really just our ReportMill page layout application with a different code entry point (Main file). The core of ReportMill and Java Inventor is a scene graph (not unlike JavaFX) that supports rich graphics and application components. That makes Java Inventor already some very highly leveraged code. And this "eat our own dogfood" mentality should lead to greater quality.
DZone: So with features like code completion, could you leverage any existing frameworks? (maybe something like Xtext?)
Jeff Martin: That looks like a great project, but we tend to try to leverage our own code base as much as possible. This helps us maintain our trim figure (the Java Inventor runtime is less than 1m, and the whole IDE is less than 2m), and it also helps us eat our own dog food. For example, any improvements or fixes we make to our rich text object for the IDE are available to developers and end users in the runtime.
DZone: Are there many developers working on the application? Is it open for community contributions?
Jeff Martin: Right now it's just me. Since this product contains ReportMill's crown jewels, we don't have plans to make it open source, but we're looking a providing a way for community developers to access the runtime code and eventually suggest or contribute changes. Please spread the word, though - if there are organizations that need to quickly build and deploy a number of rich internet applications with data objects in Java, and help out a great educational cause at the same time - we could use benefactors or VC to accelerate our schedule. Likewise, if there are any educators that don't mind being on the bleeding edge, please contact us!
DZone: Have you had any contributors express an interest yet? As it isn't open source, how do you see contributions working? Through some pluggable architecture perhaps?
Jeff Martin: No offers yet, though I've done a poor job of soliciting help and don't have a process in place to effectively share the code. I imagine when much of the runtime code is available during development, there might be some suggestions or contributions. Eventually, I hope to make the entire Java Inventor source available as a shared project in Java Inventor. :-)