跳至主要内容

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.

评论

此博客中的热门博文

Build a Reactive application with Angular 5 and Spring Boot 2.0

I have created a post to describe Reactive programming supports in Spring 5 and its subprojects, all codes of this article are updated the latest Spring 5 RELEASE, check spring-reactive-sample under my Github account.
In this post, I will create a simple blog system, including:
A user can sign in and sign out.An authenticated user can create a post.An authenticated user can update a post.Only the user who has ADMIN role can delete a post.All users(including anonymous users) can view post list and post details.An authenticated user can add his comments to a certain post. The backend will be built with the latest Spring 5 reactive stack, including:
Spring Boot 2.0, at the moment the latest version is 2.0.0.M7Spring Data MongoDB supports reactive operations for MongoDBSpring Session adds reactive support for WebSessionSpring Security 5 aligns with Spring 5 reactive stack The frontend is an Angular based SPA and it will be generated by Angular CLI.
The source code is hosted on Github, …

Activating CDI in JSF 2.3

Activating CDI in JSF 2.3 When I upgraed my Java EE 7 sample to the newest Java EE 8, the first thing confused me is the CDI beans are not recoganized in Facelects template in a JSF 2.3 based web applicaiton, which is working in the development version, but in the final release version, they are always resolved as null. I filed an issue on Mojarra and discussed it with the developers from communities and the JSF experts.
According to the content of README, In a JSF 2.3 application, to activate CDI support, declaring a 2.3 versioned faces-config.xml and adding javax.faces.ENABLE_CDI_RESOLVER_CHAIN in web.xml is not enough, you have to declare @FacesConfig annotated class to enable CDI.
Here is the steps I created a workable JSF 2.3 applicatoin in Java EE 8.
Create a Java web application, this can be done easily by NetBeans IDE, or generated by Maven archetype, for exmaple.
$ mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-w…

JSF 2.3:Websocket support

Websocket support One of the most attractive features is JSF 2.3 added native websocket support, it means you can write real-time applications with JSF and no need extra effort.
To enable websocket support, you have to add javax.faces.ENABLE_WEBSOCKET_ENDPOINT in web.xml.
<context-param> <param-name>javax.faces.ENABLE_WEBSOCKET_ENDPOINT</param-name> <param-value>true</param-value> </context-param> Hello Websocket Let's start with a simple example.
@ViewScoped@Named("helloBean") publicclassHelloBeanimplementsSerializable { privatestaticfinalLoggerLOG=Logger.getLogger(HelloBean.class.getName()); @Inject@PushPushContext helloChannel; String message; publicvoidsendMessage() { LOG.log(Level.INFO, "send push message"); this.sendPushMessage("hello"); } privatevoidsendPushMessage(Objectmessage) { helloChannel.send(""+ message +" at &…