[DEV] Java inside?
Jeudi 25 septembre 2008 à 13 h 44
Qui cause le java dans le coin?
plutôt des applis riches? (swing, swt voire awt pour les masos)
plutôt des applis web? (jsp, struts, tapestry voire servlet pour les old-school)
plutôt du batch (pourquoi pas après tout).
je demande juste qui a l'occasion de faire du java (ou pas), pas d'essayer de me prouver que java ça pue parce que ça utilise une VM alors que C++ c'est plus plus mieux et que même python ou ruby ça poutre.
plutôt des applis riches? (swing, swt voire awt pour les masos)
plutôt des applis web? (jsp, struts, tapestry voire servlet pour les old-school)
plutôt du batch (pourquoi pas après tout).
je demande juste qui a l'occasion de faire du java (ou pas), pas d'essayer de me prouver que java ça pue parce que ça utilise une VM alors que C++ c'est plus plus mieux et que même python ou ruby ça poutre.
Je n'ai développé en Java "que" des webservices tournant sur Tomcat mais ça m'a déjà permis de manipuler des beans et autres joyeusetés.
Ahhhhhhh! you said the word!!!
Enfin bon, moi j'aime bien et tout le monde peut en profiter.
Ce que j'aime en Java :
- Eclipse poutre bien
- Le multi-threading plus accessible qu'en C++
- Les exceptions qui doivent obligatoirement etre catchées
- les méthodes automatiquement virtuelles
En fait la mauvaise reput de Java doit venir de Swing et des applets qui sont laides et lentes. Pour mon server, ca marche plutot bien sans qu'il y ait une conso memoire et cpu excessive.
Je prefere quand meme le C# qui s'est inspiré de Java et dont maintenant Java s'inspire :)
Le plus sympa en java, c'est certainement Eclipse et l'ensemble des librairies open-source utilisables, souvent très bien documentées. Tu as aussi maven pour gérer les dépendances, la compilation, les tests unitaires (JUnit), tout ce qui est lié au cycle de vie du projet.
La petite bête qui monte, c'est Groovy, langage dynamique pour la JVM. Pour le Web, GRAILS.
Java est suffisamment rapide pour répondre à 99% des besoins actuels. Pour les 1% qui restent, on peut optimiser en utilisant JNI avec du C/C++, mais ça oblige à réaliser des compilations distinctes pour chaque plateforme ciblée. Je fait ça a l'heure actuelle pour un évaluateur de mains de poker temps réél : Hook du jeu de poker pour récupérer les événements des tables (cartes distribuées, etc ...) + calculs des chances de gains en C (JNI), tout le reste en Java (interface graphique et le traitement des données brutes envoyées par JNI).
- web services, avec tomcat, axis, stub, bean, WSDL et compagnie (pour reprendre l'ami "PoPcOrN").
- avec la swing pour appli un peu plus graphique (sans résultats à la console).
- programmation sur application multi-threadé (résultats à la console).
- jsp avec servlet, bean, JSLT, langage EL.
- un peu de réseaux et programmation socket en java (bien plus simple qu'en C).
- apprentissage du MVC par ce langage.
C'est sympa comme langage, mais les temps d'exécutions sont un peu hard par moment.
Pour déveloper ? => NetBeans et son tomcat intégré.
Il permet de toucher à tout ce que j'ai énoncé, surtout les web services.
Il facilite énormément le travail quand on utilise le plugin associé pour en réaliser, mais je préfère la méthode avec les pojo pour créer son web service (java2WSDL pour le service et WSDL2Java pour le client avec les stub).
J'aime pas bien le C#, c'est encore un peu jeune (sauf pour les smart appli), de plus, les plate-forme de dev (visual studio 2005 entre autre, je n'ai pas essayé la 2008) sont assez dégueulasse. Le concept du code behind avec l'asp me freine vachement, surtout quand on a les habitude du java, de plus l'hébergement reste un soucis pour ce type de plate-forme.
Je parle en tant qu'utilisateur pour du web.
j'ai fait du java a l'arrache cette année pour merger des fichiers xmls ou des outils d'annotation de video ( ci-mer QTJAva )
et en fait je fais presque la meme chose en C# \o/
Le seul probleme y en a trop. Pour tout suivre, c'est un travail à part entiere.
D'apres les retours que j'en ai : C# / .Net c'est vraiment simple et complet .. mais bon faut etre completement Microsoft compliant :)
on (dans ma boite) utilise Eclipse. Maven2 commence à être employé (je ne m'y suis pas mis).
Principalement pour des applis web intranet/extranet, avec tout le tralala qui va bien derrière: Tomcat, servlets, JSP, struts, Web Services, hibernate, junit, ant, maven, et j'en oublie...
Sinon au niveau Client Riche, j'ai pas mal taté du RCP récemment ("Moteur" Eclipse + SWT): plutôt puissant, mais pas facile d'approche.
D'ailleurs comme le fait remarquer lightningbuzz, ce qui est génial dans le monde J2EE, c'est qu'il n'y a pas besoin de réinventer la roue. Il existe des tonnes de frameworks, pour la plupart opensource, censés simplifier la tâche. Mais c'est aussi le gros problème, il y en a tellement, que c'est pas facile de s'y retrouver, ni de tout connaitre (à moins d'être Architecte).
Et certains frameworks finissent par en devenir trop... "conceptuels"... au point d'en oublier d'être simple (et d'être à l'origine de problème de perfs récurrents si mal utilisés). Bref y'en a pour tous les goûts.
Niveau IDE: Eclipse que j'adore malgré certains défauts (mais Netbeans doit être pas mal non plus, même si je connais moins).
Au point que je l'utilise aussi en temps qu'IDE pour d'autres langages auxquels je me suis mis il y a peu: Python, C++.
Gràce à lui, et avec mon bagage Java, et mes habitudes sous Eclipse, j'arrive plutôt bien à m'adapter à ces langages que je ne connaissais pas (Python) ou sur lesquels j'étais très rouillé (C++).
Et enfin, le gros avantage, c'est la portabilité. Collègues sous Windows, moi sous Linux, aucun problèmes de compatibilité: une lib sous Windows fonctionnera sous Linux sans adaptation (que ce soit au niveau settings, ou au niveau du code), ce qui est franchement agréable.
Aujourd'hui je pense que .NET poutre Java dans tous les domaines applicatifs et c'est bien pour ça qu'aujourdhui dans les entreprises tous les nouveaux projets ou presque sont lancés sous cette techno quand on a le choix entre Java et .NET. Reste à Java l'avantage d'être *vraiment* multiplateforme, car même si Mono fonctionne très bien, ce genre de projet opensource n'est pas une solution suffisamment pérenne aux yeux des entreprises.