Quelles sont les pratiques courantes pour le développement Java sur Linux?


J'essaie de migrer de Windows vers Linux en tant que plate-forme de développement Java, et bien que la transition ait généralement été assez indolore, il y a quelques points d'incertitude sur lesquels j'aimerais avoir des commentaires. J'exécute openSUSE 11.4, mais je suis ouvert à entendre ce qui fonctionne sur d'autres distributions.

  1. D'où installez-vous votre JDK? Celui-ci n'est étonnamment pas aussi coupé et sec que la plupart des gens le prétendent. OpenJDK 6 est disponible dans les dépôts openSUSE, et très facile à installer. Cependant, c'est actuellement la mise à jour 21, et en ce moment la version Oracle est à la mise à jour 24. Je suis habitué à une petite alerte dans Windows me notifiant que mon Java a besoin d'être mis à jour, mais cela ne semble pas être la norme sous Linux. Les développeurs Java renoncent-ils au JDK dans leur gestionnaire de paquets et installent-ils directement le binaire? Ou est-il un autre moyen?
  2. Où installez-vous Eclipse? Il semble y avoir un accord général en ligne que Eclipse est mieux installé en téléchargeant simplement le binaire et l'extraire quelque part, mais où est l'endroit habituel où j'extrai un programme comme Eclipse ou Ant? J'ai vu des votes pour / usr / local et / opt online, mais pas de réponse définitive.
  3. Où mettez-vous votre jetée/Tomcat? Similaire à la question eclipse, où la plupart des développeurs Java Linux mettent-ils leur conteneur Jetty/Tomcat/other.
  4. Quelles sont les différences entre la façon dont vous configurez le développement et la production À tout le moins, il semble que je je ne veux pas exécuter mon conteneur de servlet en tant que root, cela a du sens pour moi. Mais quelles autres pratiques devrais-je surveiller? Y a-t-il autre chose qui pourrait rendre mon environnement de développement plus facile, mais peut-être moins sûr?

J'ai trouvé cette question était similaire mais finalement de niveau trop élevé et n'entrait pas dans les détails de la façon dont les développeurs réels configuraient leur environnement. Si d'autres ressources vous semblent répondre à ces questions, veuillez les partager ici.

Merci pour votre temps.

Author: Community, 2011-03-16

6 answers

Q > D'où installez-vous votre JDK?
A > Je ne m'embête jamais avec d'autres JDK provenant de l'extérieur de Sun/Oracle principalement parce que notre produit est uniquement certifié pour fonctionner avec Sun/Oracle JRE. Sur mon bureau, je lance Kubuntu, mais je n'utilise jamais apt-get pour cela mais je les télécharge toujours manuellement. Raisons:

  • les mainteneurs de distro se précipitent rarement pour mettre à niveau les paquets, car leur principale préoccupation est de faire fonctionner les applications dépendantes (telles que OpenOffice). Si JDK change de 1.6.0_20 à 1.6.0_21, ils ne se soucient tout simplement pas. Je pourrais le faire parce qu'un correctif plus récent pourrait avoir un correctif important ou je veux simplement essayer si mon application réussit toujours tous les tests unitaires.
  • il pourrait être un cauchemar de conserver les anciennes versions JDK. Nous prenons toujours en charge les anciennes versions de notre produit et si je mets à niveau vers un Kubuntu plus récent, je n'ai aucune garantie que certains anciens JDK seront toujours disponibles en tant que package.
  • Je ne suis pas sûr que certaines distributions prennent même en charge l'existence multiple de JDK sur le même machine.

Ma préférence est de garder tous les JDKs/JREs dans /opt et de créer un lien symbolique vers le plus récent ou celui dont j'ai le plus besoin. Je ne vois tout simplement pas pourquoi l'installation manuelle de JDK est un problème.

J'ai également défini le PATH sur le JDK/JRE le plus récent.

Même chose (et des arguments similaires) s'appliquent à Ant et Maven.

Q > Où installez-vous Eclipse?
A > J'utilise IntelliJ mais la même chose s'applique. Je stocke l'E dans mon dossier personnel. Cela me permet de en avoir différentes versions, les mettre à jour sans avoir besoin de sudo, etc. Je pourrais aussi bien l'installer dans /opt mais je suppose que j'ai eu cette habitude quand je téléchargeais et testais la nouvelle IntelliJ IDEA EAP chaque semaine afin que je puisse rapidement supprimer les anciennes versions et ne pas polluer /opt. Enfin, d'autres programmes peuvent nécessiter Ant/Maven/JDK mais c'est seulement moi qui utilise IntelliJ d'où l'approche différente.

Q > Où mettez-vous votre jetée/Tomcat?
A> j'ai séparé dossier tomcats sous /home où j'ai ~10 instances Tomcat différentes. Chacun des Tomcats est utilisé pour une version différente de mon application (nous regroupons Tomcat avec notre application). Cela est nécessaire car un déploiement de notre application peut avoir des paramètres Tomcat (ou même une version) différents d'un autre.

Q> Quelles sont les différences entre la façon dont vous le programme d'installation développement de versus production
A> Cela dépend beaucoup de votre application. Par exemple, nous avons besoin de quelques partitions pour avoir latences d'accès inférieures mais ayant moins d'espace (par exemple gigaoctets pour les index Lucene) PAR rapport à d'autres qui peuvent avoir des latences plus élevées mais nécessitent plus d'espace (par exemple téraoctets pour les référentiels de contenu). Nous, cependant, concevons notre application de sorte que tous ces différents aspects peuvent résider sur différentes partitions qui sont configurables. Certaines partitions doivent avoir des limitations spéciales (par exemple, le téléchargement de fichiers) afin que cela ne déborde pas d'autres partitions. Il n'y a pas de réponse simple à cette question, mais évidemment la plupart de ces préoccupations n'ont pas beaucoup d'importance pour un environnement de développement.

 7
Author: mindas, 2011-03-17 13:36:05

D'où installez-vous votre JDK?

J'utilise Arch Linux moi-même, et nous avons oracle jdk/jre dans le référentiel lui-même. Par conséquent, utilisez votre dépôt de distribution s'il a oracle jdk/jre sinon obtenez-le d'oracle lui-même.

Où installez-vous Eclipse?

Encore une fois, la même réponse que ci-dessus s'applique également à cela. Si toutefois, il y a un problème avec la version fournie par la distribution, je mets toujours mes installations personnalisées dans/ opt / - /opt / java , /opt/eclipse, /opt/netbeans - etc. Je n'installe pas de choses dans mon dossier personnel (sauf dans des circonstances où je n'ai l'autorisation nulle part ailleurs - rare), car cela signifierait que d'autres utilisateurs auraient besoin d'accéder à mon dossier personnel pour exécuter les choses. Je ne veux pas que la production (ou le développement d'ailleurs) ait un accès direct à ma maison.

Où mettez-vous votre jetée/Tomcat?

La même réponse que ci-dessus s'applique ici aussi. Seulement dans des circonstances où j'ai installé plus d'une version, je crée un /opt/experimental/ et je l'installe pour savoir laquelle ma production est en cours d'exécution et laquelle je peux supprimer lorsqu'elle n'est plus requise.

Quelles sont les différences entre la façon dont vous configurez le développement versus production?

Si possible, j'installe toujours différentes machines pour les travaux de production et de développement. Ordinateurs différents, mais configuration exactement identique. Les seuls systèmes qui peuvent pousser le code vers le le système de production sont ceux du groupe de développement. Lorsque cette ségrégation n'est pas possible, je préfère avoir une installation différente pour les serveurs, de sorte que pendant que je peaufine la configuration de développement, mes serveurs principaux ne plantent pas ou quelque chose. De plus, la configuration du développement inclura généralement un script clean_up qui le rend prêt pour la production (suppression des privilèges inutiles pour les comptes db, nettoyage, etc.

Ayez quoi que ce soit, configurez-vous, assurez-vous simplement que vous avez différent configuration de la base de données à des fins de développement et de production.

 3
Author: Sujoy, 2011-03-17 13:56:09

La version Sun de Java pour openSUSE se trouve sur le disque nonOSS ( allez ici et faites défiler vers le bas pour un ISO), qui est une image disque supplémentaire, ne faisant pas partie de l'ISO du disque d'installation principal (ou vous pouvez extraire les RPM de ici).

En ce qui concerne eclipse, si j'installe au niveau du système, j'ai tendance à le laisser tomber /opter. Vous voudrez peut-être lire cet article sur la meilleure façon de gérer les plugins.

(Ne les laissez pas vous détourner d'openSUSE, c'est la meilleure distribution pour KDE IMO.)

 2
Author: Evan, 2011-03-17 06:03:22

Travailler avec linux est beaucoup moins de main que l'environnement Windows que vous utilisez aussi. Si j'étais vous, je passerais de distributions à RedHat ou Ubuntu, j'utilise SUSE et je n'ai jamais regardé en arrière depuis que je suis passé.

Vous pouvez placer vos binaires JDK/Eclipse/Tomcat à plusieurs endroits différents. Si vous êtes le seul à les utiliser, je vous suggère de les mettre dans votre répertoire personnel quelque part. Pour vos trucs Eclipse / Tomcat, vous pouvez les utiliser dans un bac local, puis les ajouter ce bac local à votre CHEMIN dans votre .bashrc. Vous pouvez également définir l'emplacement de votre JDK sur une variable env JAVA_HOME dans votre bash. Si vous avez besoin d'une aide plus spécifique avec la configuration, faites-le moi savoir.

 1
Author: Grammin, 2011-03-16 14:46:33

1) Nous avons eu plusieurs problèmes avec OpenJDK (bugs, etc) donc nous utilisons toujours le sun jdk.

2/3) Une bonne règle à respecter lorsque vous vivez sous Linux, est toujours d'installer votre logiciel personnalisé sous votre dossier personnel. Linux doit être réinstallé de temps en temps, mais tout dans votre dossier personnel est dans une partition de disque séparée, donc il vit. J'installe/décompresse toujours des logiciels personnalisés tels que eclipse dans / home / myuser/opt, donc mon eclipse vit à ~/opt / eclipse. J'ai aussi des liens symboliques le eclipse-binaire dans mon dossier / home / myuser / bin pour un accès facile. Lorsque je mets à niveau ou modifie un logiciel, je recâble simplement le lien symbolique.

4) Les environnements de production et de développement doivent être aussi proches que possible de l'identique. Cela élimine les charges de bugs causés par différentes configurations, etc.

 1
Author: Vidar Johansen, 2011-03-16 14:46:43

Je crée un répertoire /usr/local/java et décompresse le(s) JDK, Eclipse, Maven, Ant, Groovy et Grails, puis crée des liens symboliques vers /usr/local/bin.

 0
Author: florin, 2011-03-16 14:45:40