Slashdot Mirror


Tim Boudreau On The Future of NetBeans

maffstephens writes "With the release of NetBeans 4.0 set to reignite the open-source Java IDE war and all sorts of cool developments on the horizon, it seemed like a very good time to talk to one of the key senior NetBeans developers. In this interview, Tim Boudreau (co-author of NetBeans: The Definitive Guide) speaks candidly about his views on rival IDE Eclipse, the future of NetBeans, and the thinking behind its new Ant-based projects system."

8 of 43 comments (clear)

  1. JFluid code profiler by Armhold · · Score: 5, Informative

    I'm a dyed-in-the-wool Emacs and shell guy, but the feature that has me salivating over NetBeans 4.0 is the upcoming code profiler previously known as "JFluid". Have a look at http://profiler.netbeans.org/index.html.

    That, and the potential for using refactoring tools has me seriously considering an IDE for the first time in my life. The question is: can I make all of this work with Emacs?

  2. Newbies, all of you! by Anonymous Coward · · Score: 0, Informative

    Only newbie wannabe programmers use Java.

  3. NetBeans is NOT Open Source by maxgilead · · Score: 5, Informative

    NetBeans is NOT Open Source software. While parts of it may qualify as such, the IDE as distributed by http://www.netbeans.org/ is not.

    Below I cite sample parts of NetBeans license. There is "Binary Code License Agreement" which gives us no rights to redistribute and "Supplemental License Terms" for each part, which, basically, allows us to redistribute it in binary form only, unchanged. And such terms are repeated in almost exact same way for all other parts.

    As far as I can tell it's not even close to open source. However, if someone knows better I'd like to be proven wrong, but facts, please, not opinions.

    Here is first paragraph of NetBeans license:

    1. The following software products found in the NetBeans Build are governed by the Binary Code License Agreement including its applicable Supplemental Terms and Conditions ("BCL"):
    * XML Parser v.1.1 (jaxp and parser)
    * JavaHelp v.2.0
    * JavaC Compiler
    * J2EE Deployment APIs 1.1
    * J2EE Management 1.0
    * EJB Enterprise Java Beans 2.0
    * JMX 1.2
    * J2EE Editor
    * XML resolver 1.0
    * JMI 1.0

    Here are two first paragraphs of Sun Microsystems, Inc. Binary Code License Agreement:

    1. LICENSE TO USE. Sun grants you a non-exclusive and non-
    transferable license for the internal use only of the
    accompanying software and documentation and any error
    corrections provided by Sun (collectively "Software"), by the
    number of users and the class of computer hardware for which the
    corresponding fee has been paid.

    2. RESTRICTIONS Software is confidential and copyrighted.
    Title to Software and all associated intellectual property
    rights is retained by Sun and/or its licensors. Except as
    specifically authorized in any Supplemental License Terms, you
    may not make copies of Software, other than a single copy of
    Software for archival purposes. Unless enforcement is
    prohibited by applicable law, you may not modify, decompile, or
    reverse engineer Software. You acknowledge that Software is not
    designed, licensed or intended for use in the design,
    construction, operation or maintenance of any nuclear facility.
    Sun disclaims any express or implied warranty of fitness for
    such uses. No right, title or interest in or to any trademark,
    service mark, logo or trade name of Sun or its licensors is
    granted under this Agreement.

    Of course there are supplemental license terms for each part mentioned above, let's see what rights they give us for "JAVA(TM) DEVELOPMENT TOOLS JAXP.JAR AND PARSER.JAR ARCHIVE FILES FROM JAVA API FOR XML PARSING, VERSION 1.0":

    1. Internal Use and Development License Grant. Subject to the
    terms and conditions of this Agreement, including, but not
    limited to, Section 3 (JavaTM Technology Restrictions) of these
    Supplemental Terms, Sun grants you a non-exclusive, non-
    transferable, limited license to reproduce internally and use
    internally the binary form of the XML JAR Files Software for the
    sole purpose of designing, developing and testing your JavaTM
    API for XML Parsing compatible parsers (the "Programs").

    2. License to Distribute Software. In addition to the license
    granted in Section 1 (Internal Use and Development License
    Grant) of these Supplemental Terms, subject to the terms and
    conditions of this Agreement, Sun grants you a non-exclusive,
    non- transferable, limited license to reproduce and distribute
    the XML JAR Files Software in binary code form only, provided
    that you: (i) (a) either distribute the XML JAR Files Software
    complete and unmodified in their original Java Archive file, but
    only bundled as part of your Programs into which the XML JAR
    Files Software is incorporated, and do not distribute additional
    software intended to replace any components of the XML JAR Files
    Software; or

    1. Re:NetBeans is NOT Open Source by Anonymous Coward · · Score: 4, Informative

      Those licenses are for libraries NetBeans uses, not NetBeans itself. The NetBeans source code is open source. It does use some libraries that are freely redistributable (like the java compiler), but not open source. That's all this is.

  4. Intellij and don't look back. by clambake · · Score: 3, Informative

    I have test driven just about every Java IDE out ther, and so far, hands down, Intellij Idea is the way to go. It isn't free, but it's quite cheap. It's had Java 5.0 support since Java 5.0 was java 1.5 beta and generic support even before that. It's got refactoring capabilities out the whoozow and integrated amazingly well with cvs. It can even do codeanalysis and find duplicated code across your entire project (and of course help you refactor it out). Except for JBuilder's GUI building, I can't think of another IDE that can do anything that it does better.

  5. I like both eclipse and netbeans by jilles · · Score: 3, Informative

    Before eclipse, netbeans was the only free IDE that could compete with its commercial counterparts. The 1.x and 2.x versions were pretty OK compared to other free IDEs. The 1.x generation was the first time I preferred an IDE over an editor/compiler combination. Especially the GUI editor was one of my favorites (and having done swing programming manually, I am very critical of such tools).

    Then eclipse came and especially in its 2.x version and 3.x version showed the weaknesses in netbeans (usability & GUI performance). Fast forward to 2004. I'm using eclipse 3.0.1 on a daily basis with some plugins and I'm reasonably happy with it. Performance is a bit sluggish on my (soon to be replaced) 1Ghz pIII but acceptable on smaller projects.

    I disliked all of the netbeans 3.x stuff, including 3.6 which I only gave a brief glance. But I tried netbeans 4.0 beta the other day and I liked what I saw. Out of the box it supports a lot of stuff that eclipse simply does not support (basically all the j2ee stuff, ant integration, xml, html). You can get most of these things in eclipse by installing commercial plugins but if you want everything for free it's pretty hard to find e.g. jsp support, good servlet container integration (more than the pathetic tomcat start/stop support in some eclipse plugins), etc. The netbeans people already had most of this in the 2.x and 3.x generations and the functionality has been much improved since then. Also the features are well integrated: you can create a jsp file from a template, use autocompletion to hook it up to your java stuff and deploy it to tomcat with the debugger attached. Doing the same in eclipse requires a lot of manual intervention since eclipse 3.0.1 doesn't understand tomcat, jsp, deployment descriptors and debugging a running tomcat server. It resorts to plaintext editors for most of these things.

    Also, to my surprise, netbeans was very fast on my old pc at work. It effortlessly handled large projects which eclipse is having problems with on the same machine. This is definately progress from 3.x. Browsing in 3000+ loc java files in eclipse is a pain but netbeans seems to handle this much better. IMHO the whole swing vs swt performance debate is over, neither party won. Eclipse is not faster for the same tasks in netbeans and both are resource hogs.

    Not all is well though. Eclipse has much better refactoring support and seems to have the better java editor. In the end, a java programmer spends lots of time editing java code and that is what eclipse is very good at. All the other stuff is nice to have but not essential for powerusers like me.

    In addition, some interesting tools are under development at eclipse which will again level the playing field for eclipse. The webtools project for instance intends to bring lots of j2ee goodies to eclipse.

    --

    Jilles
    1. Re:I like both eclipse and netbeans by Earlybird · · Score: 2, Informative
      • But I tried netbeans 4.0 beta the other day and I liked what I saw. Out of the box it supports a lot of stuff that eclipse simply does not support (basically all the j2ee stuff, ant integration, xml, html). You can get most of these things in eclipse by installing commercial plugins but if you want everything for free it's pretty hard to find e.g. jsp support, good servlet container integration (more than the pathetic tomcat start/stop support in some eclipse plugins), etc.
      A nice thing about Eclipse is that it's modular, and distributed as such.

      If you want everything in one box, you can download Yoxos, an Eclipse distro that comes with a ton of open-source plugins.

      As for J2EE, if you're not into bleeding-edge software, until the Web Tools project is ready for production use you might want to check out Lomboz, an extremely popular plugin that provides JSP support, J2EE wizards, app server launching/debugging, web services support and much else.

      What's missing from Eclipse's Ant support?

  6. Re:Out of the mouths of babes and sucklings. by Earlybird · · Score: 2, Informative
    Eclipse's plugin model is based on vendor-neutral, open standards. It's called OSGi.

    That's just the plugin model, mind you, which is not specific to Eclipse; it just specifies the way plugins are packaged, declare their metadata, are loaded, accessed etc.

    Eclipse's object model, which rests on top of this framework, is something else, and that's Eclipse-specific. Eclipse's object model is much more generic and vast in scope than NetBean's OpenIDE API.

    In case you don't know the Eclipse plugin system well, it's a modular design based on loose coupling of components all extending each other.

    There's no central plugin point to speak of; Eclipse is essentially a collection of loosely-coupled components, with some glue at the bottom to bootstrap the core plugins.

    Every extension can potentially extend another. For example, if I provide a view, then I can let anyone extend that view by, say, providing context menu items, toolbar buttons, visual overlays and the like.

    These extensions would all communicate using publicly declared APIs; hidden inter-component communication is discouraged.

    For example, if I were building a stock trading app, I might write a bunch of different views -- graph view, a table view, a ticker view, etc.; the table view would expose a mechanism to detect when the user has clicked on a specific stock symbol.

    The graph view would plug into this mechanism and change its view to show the currently selected stock. However, the graph view would not know anything about the view into which it was plugging into; it would only know about the interface contract of the extension point, which could be anything.

    You could potentially bundle each of these views separately and mix and match with other, third-party views: as long as they know the public interfaces, they can talk to each other. I could write a better graph view and plug it in without having to change any code in any other view.

    The reason Eclipse is so flexible, and is popularly touted as an "integrated anything environment", is precisely because it is so loosely defined.

    Eclipse would not be able to use the NetBeans APIs directly because they are, well, NetBeans. Eclipse could not do everything it does today if it adhered to the NetBeans API.

    Also, NetBeans/OpenIDE is tightly coupled to Swing, and while SWT can embed Swing, consistently and seamlessly adapting Swing-using components into the SWT environment would be a lost cause.