Jeff has posted 11 posts at DZone. View Full User Profile

Java Can Be Saved

11.11.2009
| 7573 views |
  • submit to reddit
Much has been written in the Java community about what is wrong with Java and what to do about it. Unfortunately, most of us developers are code centric, so the answer is usually a new language feature, a new framework or even a new language.

But what we really need is to reduce the complexity of Java development. We need to eliminate the multi-year learning curve needed to write basic Java web applications. And neither closures, SwingX or JavaFX is going to do that.

Now I haven't done real Flash development, but I've created Flash pages. This is because Flash Professional makes it relatively easy. I've also created a Silverlight page - but again, because Microsoft Expression makes it easy.

So where is the visual designer that makes it easy to create basic Java web pages, without spending months learning an IDE, Java, Swing, Java2D, Jar packaging/signing, applet deployment and more? Why do we have a dozen ORM frameworks, XML parsers, testing frameworks and profiling tools, but no end-user visual design tool?

And no points awarded if you answer Eclipse, NetBeans or Matisse.

Update: This is what I'm talking about: DataBox.

Published at DZone with permission of its author, Jeff Martin.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Onur Ersen replied on Wed, 2009/11/11 - 7:20am

Hello Jeff,
By looking through programmer perspective I strongly agree on what you said about making development as easy as it can be.
But for a newbie who really wants to be a real developer needs to get into platform deep inside by learning eclipse and java platform features well.
By the way,I don't think that Java is dead.

Jeff Peff replied on Wed, 2009/11/11 - 7:40am

I wholeheartedly agree with you Jeff! Java is a great back-end development language, but on the GUI department it's an abomination.

Yes, Swing is a good library which can pretty much let you do anything you want but the curve is too high and you end up coding a specific component most of the time. What Java lacks is good tools to easilly make a sophisticated GUI/Webpage.

It almost looks like everyone at Sun thinks from a developer perspective rather than from an artist perspective. Sun tries with JavaFX but its still too much coding and less "clicking". If you want to lower accessibility to the Java platform, you better provide tools which make the entire development cycle easier. We have the frameworks (that's an understatement) now we need to make the art-pipeline more smooth.

This tool would look like Flash for instance. There's the tool to build a flashmovie with all kinds of features build in which let you do 99%. For that 1% missing there's actionscript.  This tool would like a Flash builder while Java underneith will be "actionscript".

If I want to make something as trivial as a JTable with a combobox auto-complete filter, I want it done in a few clicks. Not install a third party library only to find out it's not exactly what I needed and have to write the whole thing myself.

If I want to change the entire look and feel of my components, I want to click and import my own art, not extend components or overwrite global values which cost me significant lines of code and time. Nor do I want to constantly recompile and check out the results.. I want a tool that instantly shows me what my app will look like.

Sure.. Matisse is nice and all, but when stuff gets complicated where I need to define accurate placement of components to the pixel (what you usually do when you have a professional interaction design) it just won't cut it.

Endre Varga replied on Wed, 2009/11/11 - 8:31am

Its not just an accident that Anders Hejlsberg designed c#. He was a chief architect of Delphi. I came from Delphi development (long, long ago), and sometimes I still miss it. Although my programming style improved only after learning Java and its frameworks. I think learning Java is important, because along the way you learn a lot, that is not tied to the language. Java's learning curve is something that is a double edged sword. In my country salaries for a Java developer are 20-30% higher than for .NET. This is mostly because those people that managed to learn Java are usually quite good. This does not mean, that .net developers are not good, but the entry level is lower, so the field is more differentiated. I learnt most of my stuff from books, and it was annoying, that I could not understand a word, because most books were referencing older technologies. I remember reading obsolete books, just to understand the new ones! Young, amibitious develeoper? Wanna learn java? Well, its easy, you just have to know what DAO, DTO, JAX, DI, ORM, Session Bean, Stateless Bean, JSP, JSF, Servlet, JPA, JMX, JTA, Spring, MVC, etc, etc. The language is fine, but there are a lot of technologies and terminology out there, that a lot of books reference. Once you learn it, you know a lot. But first, it is just too much.

Rogerio Liesenfeld replied on Wed, 2009/11/11 - 9:18am

Where is the visual designer?
Check this out: http://sellmic.com/blog/2009/06/05/javafx-authoring-tool-demo-at-javaone-2009-with-video/

Yes, not yet released, but looks promising doesn't it?

There are also some JavaFX plugins for Adobe Photoshop and Illustrator, but I have no experience with that (I am a "code centric" developer :^).

Mike Mormando replied on Wed, 2009/11/11 - 10:14am

Well, not "Java", but there is JFXStudio that's supposed to be nice from JavaFX.

Gerard Davison replied on Wed, 2009/11/11 - 12:25pm

What about frameworks such as Oracle ADF:

http://www.oracle.com/technology/products/adf/index.html

Most simple web apps are drag and drop operations that build JSF apps.  I would guess I could take someone from school have have them productively building apps in only a few months.

Of course disclaimer, I work on the JDeveloper product; but not ADF directly.

Gerard 

Dean Schulze replied on Wed, 2009/11/11 - 1:43pm

I think the problem you describe is mostly attributable to the terrible technology underlying most Java based web pages: JavaServer Pages. And after you deal with JSPs what you get is HTML, JavaScript, and CSS which are the stone-age tools of the web.

Adobe's solutions are better because they are based on a reasonable language, ActionScript, instead of HTML created by the hairball of JSP based offerings like Struts, JSF, etc.

Even if someone came up with a good Java-based web page technology there would still be the issue of JVM adoption. Adobe's success with Flash based technologies is only possible because they have a 90% adoption rate for their VM whereas the JVM adoption rate is still a problem for Java-based solutions. (Does anyone know what the JVM adoption rate is?)

Gregory Smith replied on Wed, 2009/11/11 - 2:29pm

I think Apache Pivot is the best Java-based solution for simple, easy-to-build Java GUIs. It provides a declarative syntax, WTKX, for creating the GUI classes. Unfortunately there is no WYSIWYG GUI-builder plug-in for Eclipse - at least not yet. Hopefully this will be remedied before too long. But even without a drag-&-drop GUI tool, it is still very simple, straight-forward, and easy when compared to Swing, JSF, of JavaFX.

Alexander Ashitkin replied on Wed, 2009/11/11 - 2:45pm

I know nothing, but i want to develop. That's why java is bad for me.

Jeff Peff replied on Wed, 2009/11/11 - 3:05pm in response to: Dean Schulze

From the top of my hat, Java adoption rate is roughly 80%. I can't provide a source but I recall reading it while searching google a few months back. Do note that this doesnt mean the latest JRE is installed. I recall most systems have 1.5. Anyhow the adoption rate isnt as terrible as you'd expect.

 

Jeff Martin replied on Wed, 2009/11/11 - 3:19pm

Adobe concedes Java adoption is about 80%, which probably makes Java the most under-utilized platform on the planet, given its wide distribution compared to the limited content. Which again makes the point that Java would benefit from an end-user design tool.

Steve Hansen replied on Wed, 2009/11/11 - 5:26pm

The company I work for created a java development tool that uses a point and click interface to develop java applications. I'm not a developer, but I can create java apps in about 5 minutes with it. http://www.mrc-productivity.com/

aa bb replied on Thu, 2009/11/12 - 2:24am

NetBeans gives support for drag drop compnents onto Java applets and other panels. Maybe they should add for JSP and other components also

LOL DUDE replied on Thu, 2009/11/12 - 3:21am

Without those language features it is much harder to build frameworks that make it easier/faster to get the job done. But we got to stop trying to fix Java. It is over. Java is in maintenance mode and no innovation will come to the language anymore. Stop trying, it is over.

Rainer Eschen replied on Thu, 2009/11/12 - 3:30am

@drewhk I have a similar background like you. I was a former Sun Java Architect. My experience shows me that is has a lot to do with the history of Sun why we still miss tools like Delphi. I had a lot of discussions with those command line hackers about using GUIs. If Borland wouldn't have tried the Inprise disaster we may would have better tools these days. JBuilder in the early days showed that it is possible to follow the ideas of Delphi. @Gerard Davison The integration is well done (btw, JDeveloper is based on a JBuilder kernel ;-)). Sun had something similar that tried to be a Java-based Delphi: Sun Java Studio Creator. Both tools do/did pretty well in "their" world, but I skipped both because of their "closed" programming model three years ago. Sounds strange? With the Creator e.g. I tried to change the persistence model. I gave up. The world of Delphi was quite simple: one vendor, one architecture, one OS (Windows) - and a cool component model. This worked until we got the Web. The early Delphi support for the Web already showed that the model was also a closed one. For those using only MS technology this was no problem. Today we have a multi-client, multi-platform, multi-framework, multi-editor, multi-[*] world. If I'm living in a Oracle world, ADF is a cool solution, if not .... So, I have to skip the framework, maybe the editor, and change to a basic tool set, like MyFaces/Tomahawk, Ant|Maven, Eclipse|Netbeans. Neither Eclipse nor Netbeans are comparable to what Delphi delivered in those days. They are still comfortable text editors - but no design tools. If you only have a look at JSF and its open source frameworks you understand why there are no useful visual tools: complexity. For a realtime visual designer presentation I have to "simulate" a Web container. How do we do this if we have deployments of a minute (in the best case). I hope that we can also skip the Web container model one day. In comparison to this FlexBuilder (based on Eclipse) delivers a bit of what Delphi did. But, we still have to wait for a FlashBuilder 5 or higher to get something really comparable. I have no problem to use Eclipse. I don't expect to get what Delphi did. Eclipse is what Borland talked about for years in those days without delivering it finally. Today you have to learn a basic set of features and you can work with every add-on that you buy for your IDE platform. I expect that all platforms become even more similar so that the learning curve for IDEs will be pretty smooth in the future. I don't expect that we get those visual tools for what we do with the Web right now. If you change to Flex there's a chance. The technology and the programming model behind is much simpler. It is well designed for a visual development. So, we may have to skip the technology we use today to be able to work with the tools we miss today. There are chances that Flex becomes the next important client programming model for the Java world. So, if we are patient fun will come back to the client development in the near future ;-).

Gerard Davison replied on Thu, 2009/11/12 - 5:37am in response to: Rainer Eschen

Rainer,

Thanks for your reply, I do have to call you up on two points though.

First of all JDeveloper is not based on a JBuilder kernel, this was true in the early versions which use the JBuilder hybrid IDE written in Java,C,Pascal, Asembler and chicken entrails*. Since version 5.0 of JDeveloper we have used a new tool base re-written in Java. I will claim to be an authoritative person on this as I have worked on Oracle tools on and off for over a decade now. (Yes there are some classes with similar names; but that is to be expected given the heritage)

It is also worth mentioning that the ADF components can be deployed to other JEE application servers / even just plain Tomcat:

http://blogs.oracle.com/dana/2009/01/how_to_deploy_a_11g_adf_applic_1.html

You can also work with over databases so you are not entirely stuck in the Oracle world with ADF. Part of the reason for this flexibility is that ADF is the basis for upcoming Fusion Applications which can be deployed to different application servers etc.

http://www.oracle.com/technology/products/jdev/htdocs/11/database.html

You might find that ADF is interesting even in cases where you are using a different database and application servers. 

You will have to excuse my enthusiasm for ADF, I guess this seems like a bit of astro turfing on my part, the tools org in Oracle has been given on day a week out of there normal duties to build interesting ADF applications. I had never played much with ADF in anger to until they started us all on courses and I was pleasantly supprised how easy it was to use.

Anyway, enough rambling back to my day job

Gerard

Oracle JDeveloper WebService / Spring / SCA Lite tooling

* This was a nightmare to maintain but apparently required to get the right perfromance in a java ide.

Rainer Eschen replied on Thu, 2009/11/12 - 8:08am

Thanks for the information about JDeveloper/ADF. I expected some improvements. For this I added a "three years ago". Although, I wrote a book about ICEfaces (http://www.slideshare.net/rainwebs/the-icefaces-book-an-introduction-2454368) I have no problems with ADF. The most annoying thing with all JSF implementations is the AJAX part. I hope that we get a better integration of different JSF components based on AJAX with JSF 2.0. The dataTable of ADF is indeed an interesting component for all of us using RDBMS ;-).

Dean Schulze replied on Thu, 2009/11/12 - 10:19am

@killingdjef and Jeff: It's good news that the Java adoption rate is 80% or better.

If the adoption problem is pretty much solved the way forward should be in the area of rich interfaces. I don't see why we should create better tools to create Java programs that ultimately create stone-age artifacts like HTML, CSS, and JavaScript. It's time to leverage Java's ability in rich interfaces (as well as serious client side processing). Better tools to create Swing interfaces would help, but that's already been tried with little success.

One area where Adobe's technologies outperform Java is in multimedia content. In order for Java to play catch-up successfully it is going to have to catch up to Adobe in multimedia support. JavaFX offers that promise, but the last time I looked at JavaFX it had limited connectivity with Java. Go Figure. Two steps forward and one step backwards for Sun.

For all of its problems JavaFX is still evolving. If it hits critical mass then we get back to Jeff's original question about making it simple to use. Java has to offer compelling solutions for things like multimedia as well as addressing the simplicity issue.

Hernando Barake replied on Thu, 2009/11/12 - 5:03pm in response to:

Gerald,

I think ADF is a good development tool but its pricing model makes many developers stick with the basics.  For reference see http://www.oracle.com/technology/products/jdev/htdocs/jdevpricefaq.html.

I don't see ADF is a web designer/user tool.  

 Hernando

 

Bruno Barin replied on Fri, 2009/11/13 - 6:28am

Jeff,

I strongly agree with you.  What Java needs is to be easy and fast to develop applications. Particulary I have no

complaints about the language syntax/semantics.  In my opinion the Java's weakness are:

 

- It's not easy to develop UI (specially desktop applications). Someone can say that JavaFX/Matisse addressed it, but is far away to be easy to develop. Just to compare, .NET developers just don't care about the code behind the desktop applications, their focus is only the business rules(OK, I know this is due to the strongly coupled of MS Studio and in Java you can choose your IDE... But should we really care about that?).

- Sun changes their focus all the time. They shoot to any directions. Do you remember the "LookingGlass", JavaSpaces, Java Metadata, Applets... Now they're coming with the new silver bullet called... "JavaFX". I really don't know any "serious" applications written in JavaFX, it's like a toy.

- Sun/Oracle should help more open source organisations like Apache. They know how to create great

frameworks better than Sun. 

 

Java is very good in the server side world, but it's very weak in the UI world, and as we know beautiful UIs(eg. Apple applications) helps to sell more software....

 

Cheers,

 

Bruno

 

Jose Smith replied on Fri, 2009/11/13 - 9:41am

I'm confused.  Are we talking about web apps or desktop apps?  I thought the OP was talking about web apps.  If we're talking about desktop apps, gui designers like matisse make it very simple to create good looking UI's with no swing experience.  If you prefer user interfaces by hand, it doesn't get much better than miglayout IMHO.  What I think needs to be easier is customing the look and feel of Swing components.  I think Java 7 is adding some CSS type styling - this is cool but it needs to be more than changing colors, borders, etc.

But I think the OP was talking about web apps - specifically - something like Flash's authoring tool for beginners.  I think Sun is working on a timeline based editor for JavaFX and while this will be useful for animations, web games, or simple apps and it will help java gain market share with wannabe-developers I don't think it will be useful for developing real business web applications.

 

@Dean

I don't understand why HTML, javascript, and CSS are stone-age artifacts.  We're developing our main application in GWT and it looks nicer than most Swing applications.  It also behaves nearly identical to a swing application with proper resizing and layout management.  I will go one step further and say it's probably a better user interface experience for our customers than any Flash or JavaFX application - with no plugins necessary.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.