Quel est le meilleur système d'exploitation pour le développement Java? Les gens de Sun poussent le Solaris, oui, Solaris a quelques fonctionnalités supplémentaires incluses telles que (dTrace, possibilité de réglage des performances de la JVM, etc.). Quelques amis à moi, ont porté leur application sur solaris, et ils m'ont dit que les performances étaient brillantes. Je ne suis pas satisfait de la commutation de mon système d'exploitation et utilise plutôt Solaris.
Quelles ont été vos expériences?
Des trois que j'ai utilisées (Mac OS X, Linux, Windows), je considère Linux comme le meilleur endroit pour faire du développement Java.
Ma machine personnelle principale est un Mac, et j’y ai consacré pas mal de développement Java, et j’en suis content. Malheureusement, cependant, Apple est en retard sur les versions officielles du JDK et vous êtes plutôt limité aux quelques versions qu’ils ont choisi de fournir.
Ma machine fournie par l'employeur est une vieille caisse P4 de HP que j'utilise principalement pour me tenir au chaud. Le vrai travail se produit "Oberon", sur un quad-core à 2,6 GHz fonctionnant sur Ubuntu 8.04 en mode 32 bits [1]. Les deux avantages que je remarque au quotidien par rapport à Windows sont les suivants:
Vous pouvez également obtenir ces avantages sur un Mac, mais Linux offre un autre bonus Nice:
[1] J'avais l'habitude d'utiliser Ubuntu en mode 64 bits, mais je n'avais pas de problème. (Le mélange de 64 bits et de 32 bits est quelque chose que Mac OS X fait beaucoupmieux.) 7.04 fonctionnait parfaitement avec les applications 32 bits exécutées sur le noyau 64 bits. 7.10 rompit le script linux32
et la possibilité d'installer de nouvelles applications 32 bits bien que les anciennes applications continuaient (principalement) à s'exécuter. 8.04 supprimait Java 32 bits en rendant impossible la connexion au réseau à partir d'une machine virtuelle Java 32 bits (plus de mises à jour pour Eclipse). L'exécution d'Eclipse 64 bits n'a pas fonctionné de manière fiable. La version actuelle d’OXygen ne fonctionnait (à contrecoeur) que sous IBM VM 64 bits, qui fonctionnerait environ 10 minutes, jusqu’à ce qu’elle cesse d’obtenir des événements de clavier. J'ai fini par abandonner de frustration et j'ai utilisé mon Mac pendant quelques mois jusqu'à ce que je dispose de suffisamment de temps libre pour effectuer une installation 32 bits de 8.04 sur le système Linux. Maintenant, tout fonctionne à nouveau et je suis assez heureux.
Développez ce que vous voulez. En tant que programmeur Java, évitez peut-être Mac OS X, principalement parce que les nouvelles fonctionnalités semblent avoir pris un retard considérable, et aussi parce que vous pouvez constater que votre ordinateur n’est plus compatible avec les nouvelles versions de Java. Cela dit, j’imagine que le développement sur Mac OS X doit être très agréable (interface de ligne de commande, dtrace, Nice OS).
Je développe sous Windows avec IntelliJ 7. C'est bon, mais il faut du matériel lourd. Je déploie ensuite sur solaris/linux. Sauf si vous écrivez des interfaces graphiques ou intégrez du code C++, vous devriez pouvoir choisir ce que vous voulez.
"développement" ?
Je pense que vous devriez vous en tenir au système d'exploitation avec lequel vous êtes le plus à l'aise, ou qui est le plus disponible pour un grand groupe (de développeurs), comme par exemple un ensemble de PC sous Windows.
Il est rare d'avoir besoin de faire un réglage en profondeur sur development platform.
Vous réserveriez tous ces dtrace et autres réglages de performances à la plate-forme Assembly (par exemple sous Linux), pour des déploiements quotidiens où tout est recompilé et testé.
Vous pouvez ensuite configurer une machine virtuelle Java spéciale (telle que IBM JRockit au lieu de Sun JRE) pour effectuer des analyses sur votre plate-forme d'intégration, où tout votre système peut être testé de l'avant à l'arrière, avec des tests de contrainte et de non-régression.
Et enfin, effectuez tous les UAT (User Acceptance Tests) sur une plate-forme de pré-production (ce qui peut être un coûteux F15K ou SunFire880 ou V490 ou ...), avec le JRE cible utilisé à cet endroit.
Mon argument est le suivant: il y a tellement de paramètres à prendre en compte entre le développement et la mise en production que la commutation d'un système d'exploitation à un stade aussi précoce peut s'avérer inutile.
Développez ce qui vous convient et testez ce que vous déployez.
Je développe Java sur mon Mac et le déploie sous Solaris et Linux. La vérité est que pour l'essentiel des tâches, Java peut être développé de manière indépendante du système d'exploitation. Cela est particulièrement vrai pour le développement côté serveur.
J'aime développer sur Unix en général sur une machine Windows, mais c'est moi.
Je dirais Mac OS X.
Développement Java intégré. Tous les outils de ligne de commande unix que vous souhaitez. Hors de la boîte. Fourmi et Maven sont là. Pas les dernières versions, mais c'est assez facile à mettre à jour.
Oui, vous ne possédez peut-être pas la toute dernière version du JDK, mais vraiment, sauf si vous avez besoin de développer le dernier et meilleur JDK, cela ne posera pas de problème.
La réponse est plus simple que vous ne le pensez: utilisez votre système d’exploitation préféré. Pour Java, c'est la meilleure réponse. Pas le développement lui-même, mais votre confort contribuera à votre succès, en parcourant les documents, etc. dans votre environnement préféré.
Personnellement, je ne me dérangerais pas. J'utiliserais la plateforme qui prend en charge au mieux les outils de développement et la plateforme cible que vous utilisez.
Pourquoi avez-vous besoin de régler la JVM? C'est une chose très inhabituelle à vouloir faire. Seriez-vous mieux écrire dans un langage de niveau inférieur comme C++?
Dtrace est disponible pour OS X, il existe également un port linux. Solaris a toujours eu la réputation d'être lente (d'où le surnom de Slowaris). Je ne sais pas si c'est toujours vrai.
Windows va très bien.
Solaris est également un merveilleux environnement de développement Java (je l’aime mieux que Windows, mais pour des raisons subjectives), mais à moins que vous ne déployiez dessus, il ne vaut peut-être pas la peine de changer.
Linux est un peu maladroit pour le développement Java, mais c'est faisable.
Le seul que je ne puisse pas recommander est Mac, car ils sont toujours aussi en retard sur la version de Java disponible (non fournie par Sun, Apple en fait la leur).
Mon meilleur conseil est de développer sur la plate-forme que vous ciblez. Ainsi, lorsque vous l'exécutez au cours des tests de développement et des tests unitaires, vous savez qu'il fonctionnera également sur la plate-forme cible, sans aucune mauvaise surprise.
Si vous ciblez toutes les plateformes, vous voudrez peut-être développer sur un Mac, car vous obtiendrez les plus mauvaises surprises sur le Mac. En ce qui concerne Java, sous Windows et Unix, "ça fonctionne", mais pas autant que sur Mac. Sun développe le runtime Java (JRE) pour tous les systèmes d'exploitation, à l'exception de Mac. Apple développe son propre JRE.
Si vous développez sur Mac, vous développerez probablement le dénominateur le moins commun. Ce qui fonctionne sous Mac doit donc être exécuté sur les autres. Cela a été mon expérience.
Sauf si, je vous recommande toujours de choisir le système d'exploitation selon qu'il exécute votre logiciel ou non. Choisissez le système d'exploitation qui exécute votre IDE et les autres outils que vous utilisez pour le développement et les tests. Si plusieurs systèmes d'exploitation exécutent les outils dont vous avez besoin, choisissez celui qui les exécute le mieux.
J'ai eu du succès avant de faire du développement Java sous Windows avec Eclipse. On dirait que vous posez également des questions sur le déploiement/l'hébergement. Quel que soit le système d'exploitation sur lequel il est préférable d'exécuter votre application, il ne faut pas vraiment spécifier quel système d'exploitation vous utilisez pour développer l'application.
Windows et Eclipse fonctionnent bien, comme l'a suggéré pmiller. Je peux également recommander OS X avec Eclipse ou IntelliJ IDEA (ce dernier fonctionne également sous Windows).
Je n’ai jamais fait que le développement Java le plus élémentaire sous Solaris (pratique de la programmation des structures de données de base à l’Université); Cependant, j'ai trouvé cela très pénible sous Solaris, faute d'outils appropriés (je pense que j'étais limité à nedit ou quelque chose du genre).
J'ai utilisé Linux, Windows et OS X. Mon principal argument en faveur de OS X est qu’il s’agit d’un système d’exploitation convivial (c’est-à-dire que je peux utiliser iTunes, la plupart des navigateurs modernes, sans avoir à allouer 50% de mes ressources). le temps de le maintenir sur un ordinateur portable comme linux) avec une fondation unix. Comme la plupart de mes développements concernent des systèmes Unix, cela rend la vie beaucoup plus productive. En outre, il existe une communauté de développement de plus en plus active derrière la plate-forme ici. Ces raisons fonctionnent également à l’inverse pour Windows - bien que cygwin mette fin à certaines de mes exigences concernant l’utilisation des outils Unix - ce n’est rien d’avoir un véritable système Unix.
Une chose à prendre en compte est de savoir si vous allez développer une application pouvant être exécutée sur un mac. J'aime OS X, mais le bon vieux Steve veillait à ce que nous ayons toujours de nombreuses versions de JDK en retard. Nous venons tout juste de prendre Java 6. Développer sur un Mac peut au moins garantir que vous travaillez avec la version la plus basse possible du JDK.
Votre environnement de développement DOIT ÊTRE LE MÊME QUE LA PRODUCTION.
Il n'y a pas de "meilleur environnement de développement" qui ne soit pas identique à votre environnement de production. Exécutez ce que vous exécutez en production, en développement.
Cela dit, cela ne signifie pas que vous ne pouvez pas exécuter votre IDE, par exemple, sur un autre système d'exploitation, à condition que vous développiez toujours sur le même système que celui de la production (sur une autre machine ou sur une machine virtuelle, par exemple).