[forge-dev] How to choose which Java EE version ?

Antonio Goncalves antonio.mailing at gmail.com
Mon Aug 26 09:13:27 EDT 2013


Ok, thanks for pointing these JIRAs. I've added my 2cts in a comment :

https://issues.jboss.org/browse/FORGE-378

Antonio


2013/8/25 Vineet Reynolds Pereira <vpereira at redhat.com>

>
> Hey Antonio,
>     I believe all of these would be eventually covered by FORGE-957 <
> https://issues.jboss.org/browse/FORGE-957> and maybe other related items
> in JIRA (FORGE-378 <https://issues.jboss.org/browse/FORGE-378> for
> instance, but that is a dup). I don't think we have worked out the
> behavioral needs, but the idea is to allow the container or Java EE version
> dictate the Maven artifacts and versions that would be declared in the
> project during generation.
>
> Vineet
>
> ----- Original Message -----
> > From: "Antonio Goncalves" <antonio.mailing at gmail.com>
> > To: "forge-dev List" <forge-dev at lists.jboss.org>
> > Sent: Sunday, August 25, 2013 7:36:49 PM
> > Subject: [forge-dev]  How to choose which Java EE version ?
> >
> > Hi all,
> >
> > I've realized that I wrote on the forum (
> > https://community.jboss.org/thread/231843 ), but maybe the development
> ML
> > would have been more appropriate. Here are some thoughts and questions
> about
> > "how to ask Forge to generate a Java EE 6 or Java EE 7 application" :
> >
> > ----------------------------
> >
> >
> >
> > Java EE 7 is out... and one day will come Java EE 8, 9 and so on. So we
> > should be able to ask JBoss Forge to either generate a Java EE 6 or 7
> > application... and if we want to be more precise, you could even go into
> > choosing from Java EE 6, Web Profile 6, Java EE 7 and a Web Profile 7
> > application. But how to choose a version with JBoss Forge ?
> >
> >
> >
> > Today, with JBoss Forge 1.x, you create a project with a CLI without
> giving
> > any version indication :
> >
> >
> >
> >
> >     1. new-project --named app1 --topLevelPackage org.app1 --type war
> >
> >
> >
> >
> > Then, when you setup your project, you give Forge some hints :
> >
> >
> >
> >
> >     1. persistence setup --provider ECLIPSELINK --container GLASSFISH_3
> >     --named testPU ;
> >     2. validation setup --provider HIBERNATE_VALIDATOR ;
> >
> >
> >
> >
> > If the idea is to use Forge to create Java EE applications running in a
> > container (and not just in standalone Java SE), the CLI to create a
> project
> > misses some information, and the setup is redundant. I would think of
> > something like :
> >
> >
> >
> >
> >     1. new-project --named app1 (...) --version JAVAEE_7 --container
> >     GLASSFISH
> >     2. new-project --named app1 (...) --version JAVAEE_6 --container
> >     GLASSFISH
> >     3. new-project --named app1 (...) --version JAVAEE_WEBPROFILE_6
> >     --container GLASSFISH
> >     4. new-project --named app1 (...) --version JAVAEE_WEBPROFILE_7
> >     --container GLASSFISH
> >
> >
> >
> >
> > Note that I didn't put the version of GlassFish because the version of
> Java
> > EE implies the version of GlassFish (eg. Java EE 6 == GlassFish 3, Java
> EE 7
> > == GlassFish 4). But note that you could also specify the container if
> > needed (e.g. generate a Java EE 6 app running on GlassFish 4)
> >
> >
> >
> >
> >     1. new-project --named app1 (...) --version JAVAEE_6 --container
> >     GLASSFISH_4
> >
> >
> >
> >
> > And, of course, the following would be illegal (GF 3 cannot run a Java
> EE 7
> > app) :
> >
> >
> >
> >
> >     1. new-project --named app1 (...) --version JAVAEE_7 --container
> >     GLASSFISH_3
> >
> >
> >
> >
> > On this comment , Lincoln says that the application should only depend on
> > Java EE APIs. So I think the pom.xml should only contain one of the
> > following dependency (depending on the version of Java EE 7) :
> >
> >
> >
> >
> >     1. < dependency >
> >     2. < groupId > javax </ groupId >
> >     3. < artifactId > javaee-api </ artifactId >
> >     4. < version > 7.0 </ version >
> >     5. </ dependency >
> >     6. < dependency >
> >     7. < groupId > javax </ groupId >
> >     8. < artifactId > javaee-api </ artifactId >
> >     9. < version > 6.0 </ version >
> >     10. </ dependency >
> >     11. < dependency >
> >     12. < groupId > javax </ groupId >
> >     13. < artifactId > javaee-web-api </ artifactId >
> >     14. < version > 7.0 </ version >
> >     15. </ dependency >
> >     16. < dependency >
> >     17. < groupId > javax </ groupId >
> >     18. < artifactId > javaee-web-api </ artifactId >
> >     19. < version > 6.0 </ version >
> >     20. </ dependency >
> >
> >
> >
> >
> > You do not need any extra dependency if you want an application to depend
> > only on Java EE. So that means the following commands can also be changed
> > from :
> >
> >
> >
> >
> >     1. persistence setup --provider ECLIPSELINK --container GLASSFISH_3
> >     --named testPU ;
> >     2. validation setup --provider HIBERNATE_VALIDATOR ;
> >
> >
> >
> >
> > to
> >
> >
> >
> >
> >     1. persistence setup --named testPU ;
> >     2. validation setup ;
> >
> >
> >
> >
> > No need to specify the provider. That's because you will use the JPA/Bean
> > Validation/... default implementation of the container (GlassFish uses
> > EclipseLink, JBoss uses Hibernate...). And to ease the configuration and
> > portability, this means that you don't need the <provider> element in the
> > persistence.xml :
> >
> >
> >
> >
> >     1. <? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
> >     2. < persistence xmlns = " http://java.sun.com/xml/ns/persistence "
> >     xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " version =
> >     "2.0" xsi:schemaLocation = " http://java.sun.com/xml/ns/persistence
> >     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd " >
> >     3. < persistence-unit name = "javaone2013PU" transaction-type =
> "JTA" >
> >     4. < provider > org.eclipse.persistence.jpa.PersistenceProvider </
> >     provider >
> >     5. (...)
> >     6. </ persistence-unit >
> >     7. </ persistence >
> >
> >
> >
> >
> > Nor do you use the <default-provider> element in the validation.xml (and
> so
> > on).
> >
> >
> >
> > I think the Java EE version should be specified when the project is
> created,
> > and then all the setups would use the default container implementation.
> >
> >
> >
> > --
> > Antonio Goncalves
> > Software architect and Java Champion
> >
> > Web site | Twitter | LinkedIn | Paris JUG | Devoxx France
> >
> > _______________________________________________
> > forge-dev mailing list
> > forge-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/forge-dev
> _______________________________________________
> forge-dev mailing list
> forge-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/forge-dev
>



-- 
Antonio Goncalves
Software architect and Java Champion

Web site <http://www.antoniogoncalves.org/> |
Twitter<http://twitter.com/agoncal>
 | LinkedIn <http://www.linkedin.com/in/agoncal> | Paris
JUG<http://www.parisjug.org/>
 | Devoxx France <http://www.devoxx.fr/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/forge-dev/attachments/20130826/21d71626/attachment-0001.html 


More information about the forge-dev mailing list