Need Help: Modern Java Landscape Overview + Questions

Discussion in 'Mac Programming' started by HiRez, Aug 4, 2006.

  1. HiRez macrumors 603


    Jan 6, 2004
    Western US
    Hi guys, I used to do some Java programming but haven't really touched it much in at least 5 years (been doing C/Obj-C/Cocoa/Python development instead). But, I may have an opportunity a bit down the road at a great job doing Java development (you can translate "great" as "really high-paying" ;)). I'm sure the landscape is much different now than the last time I was involved (back then JFC/Swing, applets, and EJB were considered "new", for example, and anything web-related was very primitive). Please excuse the long post, but here are some of the questions I have:

    1. What's a good general IDE to use for Java development nowadays? Even though I'll use my Mac whenever I can, I'd probably want to stick with something cross-platform and industry-standard, such as Elipse or NetBeans. Are those tools still the most common? Are they any good or out of date? Are there newer, better tools I should look at? Whichever IDE I use would need to be able to handle many different Java-related things, including XML, localization, different deployment options, etc. Also, which ones perform best on a Mac?

    2. Is Ant still relevant for building Java apps? It's what I used to use but I don't know if there are better methods to use now.

    3. What ancillary technologies should I be looking at learning for general, modern web-based development? The myriad of options available now are staggering and bewildering. Some things I've seen include XML, XML-RPC, SOAP, XSLT, SAX, JSF, UDDI, WSDL, Spring, Ajax, etc. There are so many I don't even know where to start or which ones I should be learning. It seems Ajax will be a must (although I understand that requires using a lot of Javascript...yuck), but what else, bearing in mind I may be eventually developing or at least interacting with enterprise business objects)? In the past I have used JSP, Servlets, and Struts and hated every bloody second of really was not fun at all and seemed like a very kludgy solution to web-enabling Java. Hopefully there are newer, better frameworks and technologies that are being used?

    4. What are the best resources for brushing up on my Java and all the related technologies? I feel like I still have all the basics in my head somewhere but I need to start myself off gently again to make it all come back. What books do you like? What websites are the most helpful?

    Thanks for reading!
  2. gekko513 macrumors 603


    Oct 16, 2003
    I will also be interested to see if anyone has any insights on this, but most programming discussions on these forums are quite basic, so I'm not sure if this is the best place to post to reach a high number of experienced enterprise level Java developers with up to date knowledge of the platform.

    As for the questions. My impression is the Eclipse and Netbeans are both good IDEs and both projects are active, are releasing updated version regularly and are widely supported.

    I'm currently reading "Beginning J2EE 1.4" from 2003 by Weaver and Mukhar, hoping that at least some of it is still valid.
  3. therevolution macrumors 6502

    May 12, 2003
    I've been using Eclipse for a couple of years now, and it's pretty good. Now that I've had lots of practice, I feel that I'm very productive with it. I briefly tried Netbeans, which seems decent, but I went back to Eclipse - probably because I'm used to it, and it works well for me. The GUI builder in Netbeans 5 is pretty slick, though. I've heard good things about IntelliJ IDEA, but I haven't personally tried it.

    Eclipse runs great on Intel Macs, but is pretty slow on PowerPC Macs. Lots of RAM helps in either case.

    As far as I know, Ant is still widely used. That's what my company uses.

    Unfortunately, I don't think I can help with the rest of your question... I haven't done any Java web development (thankfully...). I also haven't picked up any Java books in a long time, so I don't have any suggestions there. Between Google and Sun's Java forum, I can usually figure out any problems I get stuck on.
  4. Palad1 macrumors 6502a


    Feb 24, 2004
    London, UK
    I'm a big fan of Eclipse, great refactoring, slick editor, plays nice with the rest of the OS, but it really lacks in the JSP/Struts department.

    Netbeans is much more tightly integrated, with it you get the whole shebang (text editor/compiler toolchain/application server/wywiwymg swing - jsp editor/struts/war deployer...)

    Of course there are eclipse plugins but there are incompatibilities between them.

    I've been doing more and more .Net the past year, but had a discussion with a Java expert the other day, seems like Struts/JSP is on the way out, in favor of JFaces.

    If you need an O/R mapping, it seems that Hibernate still dominates the field.

    As far as application servers go, I'm sorry, I can't help you there...
  5. mrichmon macrumors 6502a

    Jun 17, 2003
    A couple of thoughts:

    Eclipse is still one of the most popular IDE's. NetBeans is good and gives you the total integration. You can get the same level of integration that NetBeans provides if you go with the Rational tooling from IBM. The Rational IDE is built on top of Eclipse so everything you know about Eclipse is the same in the Rational tools. JSF integration and EJB authoring is heavily automated for you.

    Get up to speed on the new features of Java 1.5. Java 1.5 has some significant changes to the language. Most of the changes are improvements so you really want to understand the support for generics and the automatic boxing/unboxing stuff.

    EJB has evolved a lot. The deployment descriptors have had major changes over the years. With the new specification released last year the deployment descriptors are now optional. However not many folks have picked up the new specification yet.

    Ant is still the way to go for complex build needs.

    If you are interested in web integration take a look at Java ServerFaces. JSF feels in many ways like the natural evolution of struts and effectively smooths over the rough parts of struts.

    To group your list of technologies -- XML, XSLT, SAX are all about data storage and processing. Personally, I find that XML and SAX are the basics here. Understanding a little of XML is necessary for many technologies since most people end up using XML as their data/configuration format. SAX gives you an easy way to parse XML documents. To output XML you can just use print/write statements. If you need to process over the XML documents then DOM is your path.

    WSDL, SOAP, XML-RPC -- these are your component services technologies. Basically how you wrap your code so it can be invoked by other applications.

    There is a lot of buzz around AJAX but at present it is mostly some really nasty JavaScript hacks. Long term maintenance of AJAX is not very nice. In most real world development spaces AJAX is where you go for your fluffy and glitzy aspects in your application. (If you want fluff and glitz.) I believe that AJAX will end up being a very useful approach but it desperately needs cleaner and more disciplined frameworks to be released.
  6. HiRez thread starter macrumors 603


    Jan 6, 2004
    Western US
    Yes, I was just looking those over, really some great improvements. Autoboxing/unboxing seems so obvious I just can't believe Apple hasn't done this for Cocoa/Obj-C. I can't count how many times I've had to convert a float or int to an NSNumber and back just to stuff a number into a collection. And I love Java's new abbreviated 'for' loop format for iterating over collections, and variable arg lists using '...' is great too.

    So here's my list so far:

    Core: Java 1.5
    IDE: NetBeans or Eclipse/Rational
    Build: Ant
    GUI: JavaServer Faces, AJAX (possibly)
    Data: XML, SAX, DOM
    Object relational mapping / persistence: Hibernate, SQL
    Component services: XML-RPC, SOAP, WSDL

    (I'm still unclear on which of the component technologies are necessary, then which are considered the most modern/best). Anyway, thanks to all of you for all the great info, it is really helping me. Keep it coming!
  7. Compile 'em all macrumors 601

    Compile 'em all

    Apr 6, 2005
    In programming, there is no such thing as hip or cool. It is all about getting
    the job done in a fast and efficent manner. You should first ask yourself
    what you want to do and _then_ see what you need to get it done :). Posting
    a very general question like yours will only get you back a bunch of
    mixed answers (which as far as I have read on this thread are OK).

    Anyway, regarding your first question. Eclipse is the way to go. It is
    basically the industry's defacto standard. Not in the sense MS Windows is :D,
    but because Eclipse is actually good. Borland (the maker of Jbuilder,
    another Java IDE) won't release any further versions of JBuilder and will
    move to eclipse as well (i.e, produce an IDE based on Eclipse).

    Note: AJAX has nothing to do with Java. You can read more about
    AJAX here.
  8. Compile 'em all macrumors 601

    Compile 'em all

    Apr 6, 2005
    JFaces is going to replace Struts but not JSPs. JFaces uses JSP as its display
  9. Palad1 macrumors 6502a


    Feb 24, 2004
    London, UK
    Thanks for the heads-up :)

    I've spent too much time in an MVC-less land (WebForms, bleh), whish I could get back to Java... That'll give me an excuse to get a MBP :)

    Speaking about Ajax, I had the displeasure to work with Atlas and I just checked-out google's Ajax toolkit, which seems quite nice.

    You basically write Java code using a set of ajax-aware widgets and stuff your server code in servlets. Testing is done locally, before deploiement, your bytecode is automatically turned into JavaScript.

    I think this is a very neat approach that may hint at solving Ajax' maintenability issues.


    ps: sorry for my spelling, I long for camino's inclusion of the Cocoa spellchecker :/
  10. Compile 'em all macrumors 601

    Compile 'em all

    Apr 6, 2005
    Did you try Camitools, may be it already has it.
  11. AlmostThere macrumors 6502a

    Rational is available for OS X?
  12. mrichmon macrumors 6502a

    Jun 17, 2003
    Not that I am aware of. The original poster did not specify platform requirements.

Share This Page