跳至主要内容

My wishlist in future NetBeans.

NetBeans 7.0 is only a improved version , it will not bring many new features to us. May be the version should be 6.6 or 6.5.1.
1.Clean Code. Many codes in NetBeans are too old. Why not clear them and start at a new point. Sun and the NetBeans team are too care about the API compatibility. I think as a major version upgrade , like 6.5 to 7.0 , it can begin at a new point.
Provide a more clear API strategy to keep the API compatibility , I think it is good to the module developer.
For example , the minor version upgrade, like 6.0 to 6.1, only make the API more stable and usable and mark the unused API to deprecated but do not remove them. Thus all modules agianst 6.0 can work well on all 6.x version.
When a major upgrade, like 6.5 to 7.0, remove the old code marked with Deprecated annotations in last version. Add the new usable API to the main trunk. Ajust the base infrastructure to make it more powerful.
2.Improve UI operation. I would like using the Swing (metal) UI when I use NetBeans. Swing is skinable , but NetBeans becomes problematic when I try to switch other Swing theme. I've tried the JGoodies Looks , the "versioning" menu is strange and does not work. The Nimbus Theme is also has problem under Linux. Other application like JEdit, Oxygen XML Editor are also using the default Swing theme. But they are make me comfortable, while NetBeans is ugly. JDeveloper and IntelliJ IDEA support many swing themes and can simply switch one to another.
3.Rethink the Project Build infrastructure. Now NetBeans is friendly to Ant and Maven user. But many other build tool in the world ,such as GAnt , Gradle. But NetBeans can not recognise them. Make build infrastructure more common, provide some common phase in the build lifecycle, and provide some hooks to the third part developer to inject their action, like the features provied by maven. Make NetBeans can recognise project which is based on ant, maven, grant , gradle , phing(PHP build tool) automatically.
4.Improve Java development. At java project properties panel , give a easy way to add jar from relative path of the project itself. Add Aspect J support. Enhance java junit support. Enhance java editor experience , provide quick actions like in eclipse. Make Netbeans detect error more quickly and properly and provide associate Suggestion in code complementation.
5.Make the code complement feature more intelligent . For example, when we write "List list=" and press CTRL+SPACE can provide option like" new ArrayList()""new LinkedList()" , do not show all completion options.
6.Enhance dependency and library management . Refactory the jar library management and make all lib definition based on Maven repository. Maven provide excellent dependency management.Make sure an normal Java project can add dependency from maven repository and a maven-based project can easily add dependency jar from local path.
7.Improve PHP resource management. NetBeans team know using rubygem to install ruby dependency, why forgot the PHP PEAR. I wish NetBeans can integrated PEAR to install PHP resource automatically. Make Netbeans has the ability to import class dependency form local PHP PEAR. At the same time provide PEAR export for PHP project.
8.Provide a more common "Application Facets" feature instead of "Web Framework". Obviously , Hibernate is not a web framework, and spring core can be used in a Swing Application , by default seam need EJB3 support. In project node context menu , provide a entry to add facet support to the project , and allow user configure them immediately and modify it later. If a facet is not added , do not load their associate resource. There are many problem in current NetBean, I've not enabled the JMaki support , but JMaki is appear in editor toolbar and palette. If User add a facet to project , add a configuration option to project properties panel. User can remove any added facet at anytime, NetBeans is responsible for cleaning the facet settings. Provide official support for SEAM, Struts2, Wicket , Tapestry, GWT.
9.Provide a more powerful "Run configuration" framework for the project and single file. Make it configurable for project and single file.
10.Enhance MIME type resovler. I do not how to differentiate a PRADO page template file and Tapestry page template file in NetBeans, they has same file extension(page), how to set different editor to edit them. United the "Open" and " View" action to "Open" and "Open with"(only show if has more than one editor for some MIME type file).
11.Provide team management tool and application lifecycle management tool. NetBeans provide user task , task list, collaboration module, the Cube'n Task is a good alternative to Eclipse Mylyn. CodeBeamer ALM provide powerful alm feature for NetBeans platform.
12. I Need a powerful code analyse tool. NetBeans has no alternative tool to Code Pro (based on Eclipse). NetBeans SQE , pmd , checkstyle module(I've tried three different implementation)is not productive.
13.Provide more refactor features. RefactorIT is open source now, why not integrated it into NetBeans core.
14.Support JPA and EJB modeling. Make UML module support collecting requirements and support Data model.
15.Support increment deployment and embeded app server. I'v wasted much time on waiting app server start or restart. Support deploying project without package. Allow user save one file and deploy the file to server instantly. It is not a problem for web application. For a Java Enterprise Application, use embeded app server instead.
发表评论

此博客中的热门博文

JPA 2.1: Attribute Converter

JPA 2.1: Attribute Converter If you are using Hibernate, and want a customized type is supported in your Entity class, you could have to write a custom Hibernate Type. JPA 2.1 brings a new feature named attribute converter, which can help you convert your custom class type to JPA supported type. Create an Entity Reuse thePostentity class as example. @Entity @Table(name="POSTS") public class Post implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="ID") private Long id; @Column(name="TITLE") private String title; @Column(name="BODY") private String body; @Temporal(javax.persistence.TemporalType.DATE) @Column(name="CREATED") private Date created; @Column(name="TAGS") private List<String> tags=new ArrayList<>(); } Create an attribute converter In this example…

Spring Data Mongo: bridge MongoDB and Spring

Spring Data Mongo: bridge MongoDB and SpringMongoDBis one of the most popular NoSQL products, Spring Data Mongo(Maven archetype id is spring-data-mongodb) tries to provides a simple approach to access MongoDB. Configuration Add the following code fragments in your Spring configuration. <!-- Mongo config --> <mongo:db-factory id="mongoDbFactory" host="localhost" port="27017" dbname="conference-db" /> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongoDbFactory" /> </bean> <mongo:repositories base-package="com.hantsylabs.example.spring.mongo" /> Firstly, declare aDbFactorywhich is responsible for connecting to the MongoDB server. Then, register theMongoTemplateobject which envelop the data operations on MongoDB. Lastly addmongo:repositorieswith an essentialbase-packageattribute, Spring will discovery your d…

Auditing with Hibernate Envers

Auditing with Hibernate Envers The approaches provided in JPA lifecyle hook and Spring Data auditing only track the creation and last modification info of an Entity, but all the modification history are not tracked. Hibernate Envers fills the blank table. Since Hibernate 3.5, Envers is part of Hibernate core project. Configuration Configure Hibernate Envers in your project is very simple, just need to addhibernate-enversas project dependency. <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-envers</artifactId> </dependency> Done. No need extra Event listeners configuration as the early version. Basic Usage Hibernate Envers provides a simple@Auditedannotation, you can place it on an Entity class or property of an Entity. @Audited private String description; If@Auditedannotation is placed on a property, this property can be tracked.