96 votes

Juste qu'est-ce que Java EE vraiment?

Java EE est ce "mystérieux, suaire" autour de lui pour les jeunes développeurs Java - un que j'ai essayé de me lever pour un bon moment avec peu de succès.

La Confusion résulte de:

  • Java EE semble être à la fois une bibliothèque et d'une plate-forme - il y a de multiples façons de "prendre" la Java EE bibliothèque, généralement à partir de quelque chose comme d'Oracle Java EE SDK de téléchargement. Cependant, la Java EE bibliothèque ne fonctionne pas, ni de la compilation, sauf si votre code est en cours d'exécution ou a accès à un serveur d'application Java EE (comme JBoss, GlassFish, Tomcat, etc). Pourquoi? Ne peut-on pas des bibliothèques de la fonction à l'extérieur de l'environnement de serveur d'applications? Pourquoi ai-je besoin de quelque chose de massif comme JBoss juste compiler du code simple pour envoyer un e-mail?

  • Pourquoi Java EE bibliothèques sont pas "standard" et inclus dans l'ordinaire de la JVM de télécharger et/ou le SDK?

  • Pourquoi sont-ils si nombreux Java EE offres quand il n'y a vraiment que deux saveurs de la norme Java (JVM Oracle/SDK | OpenJDK JVM/JDK)?

  • Que peut-on faire avec Java EE qu'ils ne peuvent pas faire avec Java standard?

  • Que peut-on faire avec Java standard qu'ils ne peuvent pas le faire avec Java EE?

  • Quand un développeur de décider qu'ils ont "besoin" de Java EE?

  • Quand un développeur décident qu'ils n'ont pas besoin de Java EE?

  • Pourquoi Java EE version de bibliothèque n'en synchronisation avec Java standard de la bibliothèque de versions (Java EE 6 vs Java 7)?

Merci de m'aider à effacer le fouetter!

38voto

Arjan Tijms Points 21682

Pourquoi ne peut-on pas des bibliothèques de la fonction à l'extérieur de l'environnement de serveur d'applications?

En fait ils le peuvent. La plupart des bibliothèques peut être directement utilisé de façon autonome (en Java SE) ou inclus dans un .la guerre, en pratique c'est presque toujours de Tomcat). Certaines parties de Java EE, comme JPA, explicite sections dans leurs spécifications respectives qui raconte comment ils doivent travailler et être utilisé en Java SE.

Si quoi que ce soit, ce n'est pas tellement un environnement de serveur d'applications en soi qui est en jeu ici, mais la présence de tous les autres bibliothèques et le code d'intégration qui les unit.

À cause de cela, les annotations seront analysés qu'une seule fois pour tous vos classes à la place de chaque bibliothèque (EJB, JPA, etc) de faire cette analyse et sur lui-même. Aussi à cause de cela, les CDI, les annotations peuvent être appliquées à des EJB les haricots et les gestionnaires de l'entité JPA peut être injecté dans.

Pourquoi ai-je besoin de quelque chose de massif comme JBoss juste compiler du code simple pour envoyer un e-mail?

Il y a quelques choses de mal avec cette question:

  1. Pour la compilation vous avez seulement besoin de l'API pot, ce qui est inférieur à 1 mo pour le Profil Web, et un peu plus de 1 mo pour le profil de.
  2. Pour la course, vous avez évidemment besoin d'une mise en œuvre, mais "massif" est exagéré les choses. L'OpenJDK par exemple, est d'environ 75 MO et TomEE (un Profil Web contenant de la mise en œuvre de messagerie pris en charge) est seulement de 25 mo. Même GlassFish (un Profil Complet de la mise en œuvre) n'est 53MB.
  3. Mail fonctionne parfaitement bien à partir de Java SE (et donc Tomcat) et à l'aide de l'application autonome mail.jar et activation.jar.

Pourquoi Java EE bibliothèques sont pas "standard" et inclus dans l'ordinaire de la JVM de télécharger et/ou le SDK?

Java EE dans une voie a été l'une des premières tentatives de diviser le déjà massive JDK en morceaux plus faciles à gérer et télécharger. Les gens se plaignent déjà que le graphique des classes (AWT, Swing) et les Applets sont à l'intérieur de la JRE quand tout ce qu'ils font est d'exécuter des commandes sur un serveur headless. Et puis vous aussi vous souhaitez inclure tous les Java EE bibliothèques dans la norme JDK?

Avec la libération éventuelle de la modularité de l'assistance, nous allons juste avoir une petite base JRE avec beaucoup de choses séparément installable sous forme de forfaits. Peut-être un jour, plusieurs ou même toutes les classes qui constituent aujourd'hui Java EE sera tel paquet. Le temps nous le dira.

Pourquoi sont-ils si nombreux Java EE offres quand il n'y a vraiment que deux saveurs de la norme Java (JVM Oracle/SDK | OpenJDK JVM/JDK)?

Il y a plus de juste deux versions de Java SE. Il y a au moins le JDK IBM, la précédente BEA un (JRocket, qui est fusionnée dans l'Oracle/Sun one en raison de l'acquisition), et divers autres implémentations open source et d'une flopée de mises en œuvre pour l'utilisation embarquée.

La raison derrière Java SE et EE être une spécification est que de nombreux fournisseurs et les organisations peuvent mettre en œuvre et, par conséquent, il encourage la concurrence et réduit le risque de l'enfermement.

C'est vraiment pas différent avec les compilateurs C et C++, où vous avez beaucoup de concurrents offres et tous les adhérant à la norme C++.

Pourquoi Java EE version de bibliothèque n'en synchronisation avec Java standard de la bibliothèque de versions (Java EE 6 vs Java 7)

Java EE s'appuie sur Java SE, donc c'est derrière. Les versions ne correspondent cependant. Java EE 5, nécessite Java SE 5. Java EE 6, Java SE 6, et ainsi de suite. C'est juste que la plupart du temps quand Java SE X est à jour, Java EE X-1 est en cours.

12voto

jahroy Points 10072

Voici quelques rapidement composé des réponses à vos questions...

  • Pourquoi ne peut-JavaEE bibliothèques de la fonction sans un serveur d'application? Les services fournis par JavaEE (gérée par le conteneur des transactions, gérée par le conteneur d'injection de dépendance, service de minuterie, etc..) sont intrinsèquement liés à des JavaEE conforme Serveurs d'Application (par exemple: GlassFish, JBoss, WebSphere, etc...). Par conséquent, la JavaEE bibliothèques ne servent à rien sans un tel conteneur. "Pourquoi ai-je besoin de quelque chose d'aussi massive que JBoss juste compiler du code simple pour envoyer un e-mail?" Vous n'avez pas. Il existe des moyens pour envoyer un e-mail sans JavaEE... Mais si vous voulez le faire de la JavaEE façon, vous avez besoin d'un conteneur JavaEE.

  • Pourquoi JavaEE bibliothèques n'est pas inclus avec JavaSE télécharger? La même raison que beaucoup de bibliothèques ne sont pas inclus: il serait exagéré. Puisque vous ne pouvez même pas utiliser le JavaEE bibliothèques sans un serveur d'application, pourquoi s'embêter à les inclure? JavaEE doit être téléchargé si et quand un développeur installe un serveur d'application et décide d'utiliser la JavaEE.

  • Pourquoi sont-ils si nombreux JavaEE offres? Sont-il vraiment "donc, beaucoup de" JavaEE offres? Si oui, veuillez énumérer certains d'entre eux. Plus précisément, je crois qu'il y a de multiples implémentations de la même Api.

  • Que peut-on faire avec JavaEE qu'ils ne peuvent pas faire sans Java standard? Les Lots. Vous ne pouvez pas compter sur un serveur d'application pour gérer les transactions ou les contextes de persistance sans JavaEE. Vous ne pouvez pas permettre à un serveur d'application pour gérer les EJB injection de dépendance sans JavaEE. Vous ne pouvez pas utiliser une application gérée service du minuteur sans JavaEE. La réponse à cette question devrait faire la réponse à la première question tout à fait clair... la Plupart des services fournis par JavaEE besoin d'un conteneur JavaEE.

  • Que pouvez-vous faire avec JavaSE que vous ne pouvez pas faire avec JavaEE? Euh... je ne sais pas.

  • Quand un développeur décident qu'ils ont besoin de JavaEE? Cette question est complètement subjectif... Mais si vous avez besoin des services fournis par JavaEE, vous commencez à penser à ce sujet. Si vous ne savez pas ce JavaEE est... vous n'avez probablement pas besoin.

  • Quand un développeur décident qu'ils n'ont pas besoin de JavaEE? Voir réponse précédente.

  • Pourquoi est-JavaEE version de bibliothèque n'en synchronisation avec JavaSE version? Bonne question. Je ne prétends pas savoir comment y répondre... Mais je suppose que la réponse est: "parce qu'ils ne sont pas dans"sync".

8voto

meriton Points 30447

À vue d'oeil d'oiseau, Java EE est une plate-forme, c'est à dire quelque chose que nous pouvons construire.

En prenant un point de vue technique, la Java Enterprise Edition standard définit un ensemble d'Api couramment utilisé pour construire des applications d'entreprise. Ces Api sont mises en œuvre par les serveurs d'application - et oui, les différents serveurs d'application sont libres d'utiliser les différentes implémentations de l'Api Java EE.

Cependant, la java ee bibliothèque ne fonctionne pas, ni de la compilation, sauf si votre code est en cours d'exécution ou a accès à un serveur d'application Java EE (comme JBoss, GlassFish, Tomcat, etc).

Vous compilez à l'encontre de l'Api Java EE, donc vous avez seulement besoin de ces Api au moment de la compilation. Au moment de l'exécution, vous aurez également besoin d'une mise en œuvre de ces Api, c'est à dire un serveur d'application.

Pourquoi ai-je besoin de quelque chose de massif comme JBoss juste compiler du code simple pour envoyer un e-mail?

Vous n'avez pas. Cependant, si vous souhaitez utiliser l'API Java EE pour l'envoi de courrier, vous aurez besoin d'une mise en œuvre de l'API au moment de l'exécution. Ce qui peut être fournie par un serveur d'application, ou fournie par un stand alone de bibliothèque que vous ajoutez à votre classpath.

Pourquoi Java EE bibliothèques sont pas "standard" et inclus dans l'ordinaire de la JVM de télécharger et/ou le SDK?

Parce que seuls les Api sont normalisés, pas les implémentations.

Pourquoi sont-ils si nombreux Java EE offres

Parce que les gens sont en désaccord sur la bonne façon de mettre en œuvre certaines fonctionnalités. En raison de différents fournisseurs en concurrence pour les parts de marché.

Que peut-on faire avec Java EE qu'ils ne peuvent pas faire avec Java standard?

Depuis Java EE implémentations sont construit avec les standards de Java": Rien. Cependant, en tirant parti de l'existant, les bibliothèques peuvent économiser beaucoup d'effort si vous êtes à la résolution typique de problèmes d'entreprises, et à l'aide d'une API standardisée peut éviter l'enfermement.

Que peut-on faire avec Java standard qu'ils ne peuvent pas le faire avec Java EE?

Rien, depuis Java EE comprend Java SE.

Quand un développeur de décider qu'ils ont "besoin" de Java EE? Quand un développeur décident qu'ils n'ont pas besoin de Java EE?

Généralement parlant, l'Api Java EE résoudre typique, les problèmes récurrents dans l'informatique d'entreprise. Si vous avez de tels problèmes, il est logique d'utiliser les solutions standard, mais si vous avez des problèmes différents, différentes solutions peuvent être appelé pour. Par exemple, si vous avez besoin de parler à une base de données relationnelle, vous devriez envisager d'utiliser JPA. Mais si vous n'avez pas besoin d'une base de données relationnelle, JPA ne vous aide pas.

8voto

Maxim Kolesnikov Points 1618

Qu'est-ce que Java EE?

Commençons par canonicity définition sur wiki:

Java Platform, Enterprise Edition, ou Java EE est d'Oracle enterprise Java plate-forme informatique. La plate-forme fournit une API et d'exécution de l'environnement pour le développement et l'exécution de logiciels d'entreprise, y compris réseau et des services web, et d'autres à grande échelle, multi-niveaux, évolutive, fiable et sécurisée des applications réseau.

Le point principal ici est que Java EE est une plate-forme fournit une API, pas de quelques cas concrets de la bibliothèque.

Ce qui, pour Java EE nécessaire?

Le principal champ d'application de Java EE est le réseau en fonction des applications, à la différence de Java SE orientée vers le bureau de développement d'applications avec une simple prise en charge réseau. C'est la principale diference entre eux. L'évolutivité, de la messagerie, transactioning, DB soutien pour chaque application... de la nécessité dans tout cela, a augmenté avec l'évolution du réseau. Bien sûr, beaucoup de solutions qui Java SE fournit sont utiles pour le développement du réseau, de sorte que Java EE s'étend Java SE.

Pourquoi avons-nous besoin de serveurs d'application pour exécuter notre code?

Pourquoi avons-nous besoin de systèmes d'exploitation? Parce qu'il y a beaucoup de travail douloureux avec le matériel dont nous avons besoin pour faire encore plus simple d'application. Et sans OS, vous devez le faire encore et encore. Simpliste OS est juste un programmatique conteneur, ce qui nous donne un contexte global pour fonctionner nos applications.

Et c'est ce que les serveurs d'applications. Ils sont nous permet de faire fonctionner nos applications dans leur contexte, et fournit un grand nombre de responsables de haut niveau de fonctionnalité, qui est nécessaire pour l'entreprise highloaded applications réseau. Et nous ne voulons pas d'écrire nos propres vélos pour résoudre ces problèmes, nous voulons écrire du code qui permettra de satisfaire les besoins de notre entreprise.

Un autre exemple pourrait être la JVM pour Java.

Pourquoi Java EE ne contient bord serveur d'application?

Difficile à dire pour moi. Je pense que ça a été fait pour plus de flexibilité. Java EE dit ce qu'ils doivent faire, ils décident de comment le faire.

Pourquoi JVM ne comprend pas Java EE?

Parce qu'ils dirigé vers différents secteurs du marché. Java EE a un tas de fonctionnalités qui n'en a pas besoin pour habitude de bureau.

Pourquoi sont-ils si nombreux Java EE offres?

Parce que Java EE seulement décrit le comportement. Tout le monde peut mettre en œuvre.

Que peut-on faire avec Java EE qu'ils ne peuvent pas faire avec Java SE?

À la conquête de l'internet. C'est vraiment difficile à faire avec des applets Java SE et prises de courant :)

Que peut-on faire avec Java SE qu'ils ne peuvent pas le faire avec Java EE?

Comme mentionné ci-dessus Java EE s'étend Java SE, Java EE, vous devriez être en mesure de faire tout ce qui est disponible pour Java SE.

Quand un développeur de décider qu'ils ont "besoin" de Java EE?

Quand ils ont besoin de la puissance de Java EE. Tout ce qui est mentionné ci-dessus.

Quand un développeur décident qu'ils n'ont pas besoin de Java EE?

Quand ils écrivent une habitude de la console ou de l'application de bureau.

Pourquoi les versions de Java SE et Java EE sont unsynced?

Java toujours eu des problèmes avec les technologies de l'appellation et de la gestion des versions. Si cette situation n'est pas une exception.

6voto

Gab Points 1979

Java EE est tout au sujet de conteneur concept.
Le conteneur est un contexte d'exécution dans un délai qui vous exécuter votre application et fournir à ce dernier un ensemble de services. Chaque type de service est définie par un cahier des charges nommé JSR. Par exemple JSR 907, JTA (java transaction Api), qui fournissent un moyen standard pour gérer les transactions distribuées sur différentes ressources.
Il y a généralement de nombreuses implémentations différentes pour un JSR, la mise en œuvre, vous allez utiliser dépend du fournisseur de conteneurs, mais vous n'avez pas vraiment d'avis à ce sujet que vous êtes certain que le comportement de respecter le contrat prédéfini : l'API JSR.
Afin de profiter de Java EE, vous avez besoin pour exécuter votre application à l'intérieur d'un conteneur. Les deux principaux sont l'EJB et conteneur de servlet qui sont à la fois présents sur Java EE certifié serveur d'application.

Le but de tout cela est défini un standard de l'environnement d'exécution pour permettre à un package de votre application avec seulement l'essentiel, id.heure de l'est. de votre entreprise. Il évite de dépendre d'un inconnu et divers ensemble de bibliothèques de tiers que vous auriez à forfait et de fournir avec votre application, autrement, et qui peuvent être des sources de conflits avec d'autres applications sur le serveur. Dans Java EE vous savez que tous les non standard d'exigences fonctionnelles de sécurité, transaction, l'évolutivité, l'invocation distante, et beaucoup plus seront fournis par le conteneur (factorisé pour toutes les applications en cours d'exécution à l'intérieur) et vous avez juste à la base de votre travail sur le son.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X