Discussions

News: Making Java Easier

  1. Making Java Easier (27 messages)

    Overview The last few articles published on TSS talk about one of the most painful problems with Java and JEE: the complexity and high learning curve of the technology for beginners. Chris Keene has recently described the steps needed to make Java useful and relevant to what he calls the "low end" developers: make Java easier to get started with, prettier, and more fun - and basically provide a simple platform on which any 15 year old kid can easily develop and run web applications. The Java language itself is not the problem, nor the JSP syntax or the JRE API packages. It’s what’s around the language that makes it so difficult to step into. This article will try to suggest the proper changes that can turn Java into such a platform. Simple deployment Model One of the most frustrating features in Java is the EAR/WAR/JAR/web.xml architecture for distributing web applications. Sure, it's a great system for professionals managing large projects but what if I just want a 20 page interactive web site? Why can't I simply write a Servlet or JSP or even a single Java class, copy it to the server and execute it? JEE should offer the ability to deploy even an individual class without requesting any WAR of even JAR wrapper just like PHP does. Dynamically reload classes This issue has been partly solved by products like JavaRebel but it's time to include this feature in the JVM and JEE specs. Change a single Java class and see the change right away with no restart required. Although this feature does work in some cases and on some servers, the minimum involved is redeploying the entire application. In other cases a server restart is required which in many cases can take over 5 minutes. A Simple Web Server GUI console Different severs have different management consoles, and most of them are web based. New users expect to find a tool similar to the Microsoft IIS Console, allowing browsing of the server’s folders, viewing deployed applications, drilling down through the application’s classes and pages, and deleting, updating, or uploading any piece inside an application. Besides that, the console must provide easy configuration for Data Sources, JRE parameters, User Management, JNDI objects, EJBs, and lots of other stuff I left out. Such consoles do exist in the professional servers like WebLogic and WebSphere but are not powerful enough when it comes to Tomcat, Jetty or even JBoss. A Visual IDE GUI Designer SUN made big progress presenting NetBeans 5.1 Web Pack, and NetBeans 6x. The IDE provides a powerful solution for visual web form designing, and a visual Swing designer which can easily compete with the Microsoft Visual Studio IDE. Unfortunately, however, most of the Java community prefers using Eclipse. Another problem with NetBeans Web Pack is deploying an application to a non-GlassFish server. I tried deploying a Visual Web Application to WebLogic, Tomcat and JBoss. After a lot of effort and playing around with the JARs I was able to run it on a specific JBoss version (not the latest one) but all other servers just show that annoying exception page. The fact is that if you are not a Java guru, then it will be almost impossible to perform the simple task of visually designing a form in NetBeans and then deploying it to a Tomcat or Jetty server. Besides that, there is another problem; maybe it's the popular Windows (SWT) UI or just a matter of luck but the fact is that most Java beginners will start by downloading one of the who-knows-how-many Eclipse versions. At the presents there is no free visual IDE designer for Eclipse. This means that the 15-year-old kid who wants to write a few WebForms for his project will prefer to download the free MS Visual Studio Express rather then Eclipse. If Sun would integrate their excellent visual solution into Eclipse it will probably give a big push to the entire platform. Conclusion Most of the technology is out there, scattered around different open source projects and frameworks. All we need now is to wrap it up in a friendly shell. A simple combination of an IDE->Deployment->Server system can turn Java from a platform used by experts to a wide spread technology that anyone can use. A similar act was made by Ubuntu, bringing the Linux desktop to "regular" people rather then Linux freaks. Microsoft was always good at that since the first Visual Basic release and through the latest .NET platform. Will Java be able to compete? [Editor's note: as usual, this is posted as commentary from the contributor with edits only for grammar, spelling, or other non-content-additives. This is not an endorsement of the sentiments offered, nor is it a suggestion that everything posted is correct.]

    Threaded Messages (27)

  2. One possible option[ Go to top ]

    Have you considered sMash (projectzero.org). It seems to support each of the criteria you list above.
  3. Re: One possible option[ Go to top ]

    The Net beans 6.1/Glassfish combo should be the best option for new developers. I think Sun did a very good job with Net beans 6.1 and it is lot better than visual studio for new programmers.
  4. Re: One possible option[ Go to top ]

    The Net beans 6.1/Glassfish combo should be the best option for new developers. I think Sun did a very good job with Net beans 6.1 and it is lot better than visual studio for new programmers.
    But someone else said it didn't work with JBoss. What kind of catastrophy is that? Where did the run anywhere slogan go? And does this install a complete database engine by default with connectivity, simple table design, automatic crud functionality and the works? All on one Windows PC and with single button move to a simple serverbased setup?
  5. Not only bad tools (GUI designer, Application servers without GUI, etc..) but API of pure Java is compicated. For example printing from Java. In Adobe Flex is only one main class for printing (FlexPrintJob) a three other classes are special components, three classes are enums and one class is old class for flash. In Java we have package java.awt.print (4 classes, 3 interfaces, 3 exceptions), javax.print (14 classes, 10 interfaces, 1 exception), javax.print.event (8), javax.print.attribute (80). You must attentively study this API when you want decide between PrintJob, DocPrintJob, MultiDocPrintJob or CancelablePrintJob. For XML is situation even worse. JAXB is pratically without examples and almost everybody use some open source framework.
  6. Learn Groovy first.[ Go to top ]

    Title says it all. Groovy (and Grails if you want a brain-dead web app) is great for cutting your teeth. They don't force the programmer to think about the details, but expose the relevant technology in layers so as you become more proficient, you can gradually dig into the nitty gritty. And the syntax is close enough that you can go right from Groovy to Java easily. Grails is a perfect example of this. As your app gets more sophisiticated, you can dig into the details of Hibernate and Spring, but starting out, you can have a fully functional app without knowing anything (except the general concepts) about either one.
  7. Re: Learn Groovy first.[ Go to top ]

    Sorry, should have read "dead-simple", not "brain-dead." Grails apps should be anything but, given its adaptive AJAX abilities.
  8. Re: Learn Groovy first.[ Go to top ]

    Most of these problems will be resolved by OSGI in Glassfish V3. Until that is production ready, just use Grails. It does not get much easier than that. A learning curve pretty much doesnt exist, it is so simple yet extremly powerful and adaptable.
  9. Re: Learn Groovy first.[ Go to top ]

    Most of these problems will be resolved by OSGI in Glassfish V3.
    Yes! OSGI and "Making Java Easier" are practically synonymous! Seriously, I don't even understand what OSGI does and when it's useful and I gave it at least a solid hour. If one's left clueless after that much time, that's a serious red flag.
  10. Re: Making Java Easier[ Go to top ]

    It should be more and more obvious to others that the issue/train jumping isn't a fault of the language, but of the APIs put forth. In going through some books/papers on Ruby/Scala/etc-- yes, some things are syntactically more easy to deliver, but it's usually nothing that: 1) you absolutely couldn't do in Java and 2) Something that could be more easily solved with a new API/method call in Java. Specifically, some of the language enhancements around file/IO is often used as a comparison to show line reduction. In those cases, the line reduction is fairly dramatic, but could almost be equivocal with better API calls within Java which you could write or import yourself.
  11. "It should be more and more obvious to others that the issue/train jumping isn't a fault of the language, but of the APIs put forth." +1. - John
  12. Re: Making Java Easier[ Go to top ]

    It should be more and more obvious to others that the issue/train jumping isn't a fault of the language, but of the APIs put forth.
    Agreed. Taking someone who is new to Java and getting them up to speed with the popular frameworks is a daunting task and the main reason .net exists in interprise environments and PHP has done so well in website development enviornments.
  13. Re: Making Java Easier[ Go to top ]

    It should be more and more obvious to others that the issue/train jumping isn't a fault of the language, but of the APIs put forth.


    Agreed. Taking someone who is new to Java and getting them up to speed with the popular frameworks is a daunting task and the main reason .net exists in interprise environments and PHP has done so well in website development enviornments.
    I don't agree. I had a "framework" based on Struts/Spring/Hibernate along with other OS tools and had junior developers producing some pretty good quality work with minimal knowledge of the tools. Its all in the presentation.
  14. Re: Making Java Easier[ Go to top ]

    It should be more and more obvious to others that the issue/train jumping isn't a fault of the language, but of the APIs put forth.


    Agreed. Taking someone who is new to Java and getting them up to speed with the popular frameworks is a daunting task and the main reason .net exists in interprise environments and PHP has done so well in website development enviornments.


    I don't agree. I had a "framework" based on Struts/Spring/Hibernate along with other OS tools and had junior developers producing some pretty good quality work with minimal knowledge of the tools.

    Its all in the presentation.
    Im not saying its not possible to get junior developers up to speed in Java, obviously it happens all the time. Its just been my experience that compared to .NET, it simply takes longer with Java and there are more barriers to climb and more moving pieces to understand. Even is a minimal stack that includes Struts/Hibernate. Either way, having a good mentor (which I assume you are) is also key. I'll certainly agree with you there.
  15. Re: Making Java Easier[ Go to top ]

    One more point about this issue: This isnt just academic, it has very important consequences. Ive seen entire state agencies dump Java and standardize on .NET because their experience in hiring/growing .NET developers was easier than hiring/growing Java developers. As an unapologetic Java partisan, I hate seeing that happen. tss.com in general attracts expert Java developers with deep experience and I think one consequence of this is that some people here may not be able to empathise what its like for a new developer to go from novice to experienced in the java world. Like I said, obviously its possible, it happens tens of thousands of times each year, but that doesnt mean there isnt room for improvement.
  16. "I think one consequence of this is that some people here may not be able to empathise what its like for a new developer to go from novice to experienced in the java world." I got into Java EE after 25 years in the IT industry. The hardest part of the transition is just deciding which set of frameworks, packages, etc., you are going to use in your company's architecture. If you hire someone to architect a java-based solution for you, you are only blindly buying their set of prejudices. So, I was left reading everything I could on all the different ways I could go to build web applications. As you all know, the possibilities were enormous. Then, you have to make a decision without ever having actually developed anything with these solutions. Eventually, I decided on Spring/XFire for the middleware with Adobe Flex on the client side. I've been extremely pleased with this solution. Developing web services with this architecture is faster than the old Novell Composer WYSIWIG I was using to generate the J2EE services. So, I lucked out. Couldn't be happier. We brought Dan Diephouse in for a bit to set us up and get us going. It made getting into Java pretty painless. Sure, I can't claim to be an expert, but it allowed me to establish a base and branch out with more and more Java expertise as time permitted. For me, the biggest drawback to being a newbie to Java is feeling like you're not a "real" Java developer unless you speak fluently about EJB and all the garbage that came before you decided to jump into the stream. A lot of developers feel like, in order to learn Java, you not only have to learn what is current (frameworks like Spring), but you also have to learn how to maintain all the legacy frameworks that came before it. And, maybe you don't have to learn all that, but you feel lost on Java forums because of all the antiquated features of Java that fewer and fewer people are using, but everyone still talks about. R. Grimes
  17. Assuming Everyone Came from C++[ Go to top ]

    I forgot one other obstacle to getting into Java. It's not so much true now, but I remember looking into Java when it was fairly new. Within the first five years of Java's creation, it seemed EVERY book assumed that you were coming from a C/C++ world. So, that was the take off point. It was a stupid approach, and dissuaded a LOT of people from moving to Java. Now, the error is to write Java books, introducing new frameworks, as though we all have been coding Java since its inception. If you want to get new Java developers, STOP writing books with tons of references to the frameworks that came before and with which we have no familiarity. R. Grimes
  18. I forgot one other obstacle to getting into Java. It's not so much true now, but I remember looking into Java when it was fairly new. Within the first five years of Java's creation, it seemed EVERY book assumed that you were coming from a C/C++ world. So, that was the take off point. It was a stupid approach, and dissuaded a LOT of people from moving to Java. Now, the error is to write Java books, introducing new frameworks, as though we all have been coding Java since its inception. If you want to get new Java developers, STOP writing books with tons of references to the frameworks that came before and with which we have no familiarity.

    R. Grimes
    And for you, pray you get to work on only new applications, with whatever tools come out tomorrow. No offense, but what good are you? Or them? C/C++ has been around for ever and was the most successful language of its day. Why wouldn't you tap that resource, a known resources as opposed to you? Someone who has basically statement that he can learn something...TODAY. What is in place and what must be in place is implied to be beyond you. If you can't pick up existing tools with the amount of hindsight available in the form of books and blogs, how could someone trust you to pick up something new? For that matter, who did it dissuade? VB guys? Ada guys? Cobol guys? Please. It would have been the foolish NOT to bring the C/C++ guys to the party. You couldn't.
  19. Clueless[ Go to top ]

    First of all, you don't know me or how many languages I use on a daily basis. So, if you typically make such rash conclusions, based on little to no knowledge, why would anyone hire an old dinosaur like you? You obviously missed my point, which was directed toward how to attract new developers to the Java language, rather than coddling the egos of 6o year old has-beens, such as yourself, who need a contextual reference from the past in order to understand the new. R. Grimes
  20. Re: Making Java Easier[ Go to top ]

    It should be more and more obvious to others that the issue/train jumping isn't a fault of the language, but of the APIs put forth.


    Agreed. Taking someone who is new to Java and getting them up to speed with the popular frameworks is a daunting task and the main reason .net exists in interprise environments and PHP has done so well in website development enviornments.


    I don't agree. I had a "framework" based on Struts/Spring/Hibernate along with other OS tools and had junior developers producing some pretty good quality work with minimal knowledge of the tools.

    Its all in the presentation.


    Im not saying its not possible to get junior developers up to speed in Java, obviously it happens all the time. Its just been my experience that compared to .NET, it simply takes longer with Java and there are more barriers to climb and more moving pieces to understand. Even is a minimal stack that includes Struts/Hibernate.

    Either way, having a good mentor (which I assume you are) is also key. I'll certainly agree with you there.
    I've moved from Unix C to Unix C++ to VC++ to Java. The Holy Grail of ease may be something that the world will never truly find. VB was supposed to be it, but during my VC++ days(and early java days) we spent time moving projects from the "easy platforms." Time will tell if .Net offers the same opportunities. I have faith in MS!! :-)
  21. Re: Making Java Easier[ Go to top ]

    I've moved from Unix C to Unix C++ to VC++ to Java. The Holy Grail of ease may be something that the world will never truly find. VB was supposed to be it, but during my VC++ days(and early java days) we spent time moving projects from the "easy platforms." Time will tell if .Net offers the same opportunities. I have faith in MS!! :-)
    That is what I do with some .Net projects. They start out simple and then I am missing something or it becomes a pain.
  22. Re: Making Java Easier[ Go to top ]

    I've moved from Unix C to Unix C++ to VC++ to Java. The Holy Grail of ease may be something that the world will never truly find. VB was supposed to be it, but during my VC++ days(and early java days) we spent time moving projects from the "easy platforms." Time will tell if .Net offers the same opportunities. I have faith in MS!! :-)
    That is what I do with some .Net projects. They start out simple and then I am missing something or it becomes a pain.
  23. Re: Making Java Easier[ Go to top ]

    Two words: Groovy/Grails
  24. Re: Making Java Easier[ Go to top ]

    Two words: Groovy/Grails
    How practical is it for mainstream given concerning data like this? http://dmy999.com/article/26/scala-vs-groovy-static-typing-is-key-to-performance
  25. Don't be a Scala-wag![ Go to top ]

    The performance of Groovy is leaping tall buildings my friend. Check out the release notes of the latest version: http://docs.codehaus.org/display/GROOVY/2008/05/02/Groovy+1.6-beta-1+release+with+great+performance+improvements
  26. SUN made big progress presenting NetBeans 5.1 Web Pack, and NetBeans 6x. The IDE provides a powerful solution for visual web form designing, and a visual Swing designer which can easily compete with the Microsoft Visual Studio IDE. Unfortunately, however, most of the Java community prefers using Eclipse. I am developing a matisse-like builder plugin for eclipse. Currently, I have finished most of the functionalities, including the group layout part, which works almost the same as that netbeans. But I have problems parsing/generating java code. I want to open source it under LGPL once I finish it. Can anyone help me on this? My email is: rehte at hotmail dot com.
  27. If a boy with 15 y. old can build one big, large, escalable, distribuited, multiplataform web application...We dont have job ! What about all SUN certifications ? The main issue are that builds big, large, escalable, distribuited, multiplataform aren't easy !!! And never will be !!! Dont forget that MS developments products dont have the same aims that java have !!! You cant develpment some big, large, escalable, distribuited, multiplataform with ASP.NET. I agree with that SUN and specifications should improve made the java tecnologies much moore easy....but the man goals is BUILT SOMENTHING NOT...about easily ways....
  28. Re: Making Java Easier[ Go to top ]

    If Sun would integrate their excellent visual solution into Eclipse it will probably give a big push to the entire platform.
    There's absolutely no reason for Sun to do this. NetBeans is growing in popularity every year (44% growth year-over-year). If someone downloads Eclipse and discovers that for some tasks it is a bait-and-switch -- looking free and great and then requiring money to actually solve your problem -- that's their problem and the Eclipse community's, not Sun's.