Author: David Konecny
NetBeans support for Java Enterpise Edition 7
This is a planing document for integration of Java Enterpise Edition 7 into NetBeans IDE. Java EE7 Specification is being developed as JSR 342 and is currently at version "Early Draft 2- 10/25/12".
According to Table EE.6-1 from JavaEE 7 Platform Spec these specification have changed:
|Java EE7||Java EE6||Comment|
|EJB 3.2||EJB 3.1||no new features requiring IDE support|
|Servlet 3.1||Servlet 3.0||no new features requiring IDE support|
|JSP 2.2||no change|
|Expression Language 3.0||Expression Language 1.1|
|JMS 2.0||JMS 1.1|
|JTA 1.2||JTA 1.1||no new features requiring IDE support|
|JavaMail 1.4||no change|
|Connector 1.6||no change|
|Web Services 1.3||no change|
|JAX-WS 2.2||no change|
|JAX-RS 2.0||JAX-RS 1.1|
|JAXB 2.2||no change|
|Java EE Management 1.1||no change|
|Java EE Deployment 1.2||optional|
|JACC 1.4||JACC 1.2||no IDE support|
|JASPIC 1.0||no change|
|JSP Debugging 1.0||no change|
|JSTL 1.2||no change|
|Web Services Metadata 2.1||Web Services Metadata 2.0|
|JSF 2.2||JSF 2.0|
|Common Annotations 1.1||no change|
|Java Persistence 2.1||Java Persistence 2.0|
|Bean Validation 1.1||Bean Validation 1.0||no new features requiring IDE support|
|Managed Beans 1.0|
|CDI 1.1||CDI 1.0||no new features requiring IDE support??|
|Java API for WebSocket||New API|
|Java API for JSON||New API|
|Concurrency Utilities for Java EE||New API|
|Batch Applications for the Java Platform||New API|
- Base support is targeted for the NetBeans 7.3.1
- Development will take place on the javaee7 branch, which will be merged to trunk and to release73 branch around 7.3.1 code freeze (to be confirmed)
- Builds of the Java EE 7 support are available here
Java EE 7
- EE.3 (P1, mjanicek) update Maven based Web/EJB/Ear/AppClient projects to handle JavaEE 7 profile (ie. add new archetypes); EE7 option will be hidden in the new project wizard if user is using "no server selected" server or non-EE7 server
- EE.5 (P3-2, ???) provide server configured JNDI resources in code completion, eg. @Resource(name="[jndi code completion here]"). Type of resource should be shown and filtered where appropriate, ie. code completion on a DataSource field should list only JNDI resources of the DataSource type
- EE.6 (P2-3, ???) remove "enable CDI" option from the wizards and always automatically enable CDI in case of EE7 project
- EE.7 (P1, dkonecny) update Ant based Web/EJB/Ear/AppClient projects to handle source level for JavaEE 7 profile
- EE.10 (P2, phejl) Java EE 7 Javadoc (225554)
- EE.11 (P2, anebuzelsky) After merging javaee7 branch to trunk, need to increase spec versions in trunk
- RS.5 (P3, denis) bundle milestone build of Jersey 2.0
- RS.6 (P2, denis) evaluate whether some wizards should/could generate code which utilizes asynchronous processing; or perhaps an editor feature allowing to turn synchronous handler into asynchrohous one and vice versa?
- See features details on page.
Detailed plan available at NetBeans_73_JSF22.
- JSF.1 (P2-3, Martin) add hints that package javax.faces.bean is going to be deprecated in next JSF release (223874)
- JSF.2 (P3, Martin) add hints to jsf editor complains about used http://java.sun.com/jsf tag argument in tag with another namespace than empty or xhtml, see TagDecorator JavaDoc
- JSF.3 (P1-2, Martin) made jsf editor JSF2.2 compatible, see blog, TagDecorator JavaDoc; html markup processed (with jsf: namespace tag), new jsf: and p: namespaces
- JSF.4 (P2-3, Martin) update facelets template client wizard to be able to load templates from the Resource Libraries. See JAVASERVERFACES-2511 or chapter 10.1.3 of the JSF2.2 specification; libraries can be inside the web-inf/lib or web-root/contracts directories.
- JSF.5 (P3-4, Martin) create contract wizard; this wizard would create new folder in the '<web-root>/contracts' of the application or in 'META-INF/contracts' of the chosen j2se class library; there would be also possible to specify name of the contract (which equals to the name of the folder). Could it be also included into faces-config.xml?
- JSF.6 (P2, Martin) JSF Managed Bean defined using CDI can be of the @FlowScoped scope. Also it could validate that user is using JSF2.2 framework and warn if not.
- JSF.7 (P2-3, Martin) Create wizard for new FacesFlow creation. This flow can be estabilished in the faces-config, inside the bean or as the facelet. Investigave what about the faces-config registration - is it necessary?
- JSF.8 (P1, Martin) Update web.jsf support to be able to handle JSF2.2 once the schema will be available and declaration files and manifest finalized.
- JPA.1 (P2, Sergey) schema generation support - make it easy to generate create and drop db schema scripts (current implementation: new file wizard item in Persistence category, use first pu only, generate create script and have the same restrictions as jpql editor), note: need some more testing
- JPA.2 (P2, Sergey) recognize new annotations and provide code completion; for example table columns in @Index annotation (status: implemented for columnList in javaee7/default)
- JPA.3 (P2, Sergey) bundle milestone build of EclipseLink for JPA 2.1 (status: 2.5 m11 with nb daily)
See NBJPANext for additional tasks
- EJB.1 (P2, Martin) update internal model to reflect simplified requirements on declaration of local/remote views
- EJB.2 (P2-3, Martin) Enable non-persistent EJB Timer wizard in EJB Lite case (wizard should automatically generate "persistent=false" for schedule annodation); disable EJB Timer wizard in EE6 EJB Lite case; consider an editor hint warning user of mistake
- SRV.1 (P3, Martin?) add a Servlet wizard (or update the existing one?) to utilize non-blocking IO
- JMS.1 (P3-2, Martin) revisit Message Driven Bean wizard; JMS spec defines list of property/value pairs for activationConfig attribute; anything else??
- JMS.2 (P2, ??) write a tutorial how to use JMS 2.0 in NetBeans
- JMS.3 (P2-3, Martin) update code generated by 'send JMS message' insert code action to use JMSContext; enable CDI if necessary
- JMS.4 (P3-2, Martin) EE7 project message resources can be defined using annotations @JMSConnectionFactoryDefinition, @JMSDestinationDefinition or inside the web.xml DD. "Add Message Destination" dialog should be updated to always use this annotation rather than server specific deployment descriptor.
- JMS.5 (P2, Martin?) scan code for @JMSDestinationDefinition to populate list of Project Destinations
- JMS.6 (P3-4, Martin) Add hint which complains about not valid characters in the 'destinationName' (like a '/') of the @JMSDestinationDefinition. Such destinations are not valid and are not created then. Some details 
- JMS.7 (P3, Martin) Read jms-destination from web.xml (ejb-jar.xml etc.) and populate them to list of Project Destinations
- JMS.8 (P3, Martin) New project destination panel could ask also for ResourceAdapter and PhysicalName of the topic or queue.
- JMS.9 (P3, Martin) Connection Factories of the "Send JMS Message" wizard could list all factories of the server (new API) + default factory "java:comp/DefaultJMSConnectionFactory" + it would stay editable for references which were not found.
- JMS.10 (P4, Martin) "Send JMS Message" wizard in ee7 project could offer which type of data to send - can be a String, byte, Map, Message or Serializable.
- EL.1 (P1, ??) support for new language constructs, for example: Lambda Expressions, assignment operator, semi-colon operator, string concatenation operator, collection operations, new reserved words, etc.
- The base should be completed. New statements should not cause errors in pages, embeddings work well for nested curly, keywords registered, some initial completion for operators.
- JSP.1 (P1-2, ??) Upgrade JSP parser JARs to the latest versions. It probably impacts at least: web.jspparser, web.jstl, servletapi, servletjspapi, anything else?
No IDE changes required yet.
There is an open issue in the CDI spec which may turn into an ability to specify in beans.xml which classes to scan and which not - internal CDI metamodel in NetBeans would have to take that into account.
No IDE changes required yet.
Java API for WebSocket
Preliminary list of tasks:
- See features details on the page.
Java API for JSON
No IDE changes required yet.
Concurrency Utilities for Java EE
No IDE changes required yet. It would benefit from EE.5 task for injection of managed executors.
Batch Applications for the Java Platform
Preliminary list of tasks:
- Wizard for creating Reader/Writer/Listener for a specific type
- (P2) wizard for Job XML creation
- (P2) bundle Job XML XSD
- (P3) wizard for commonly subclassed classes like listeners etc.
- (P3) code completion for Job XML (beyond Job XSD based one), eg. provide available listeners etc.
- (P4) visualize Job XML inheritance and/or provide some tooling for it