Je développe des applications Web depuis 3 ans en PHP. Je suis maintenant sur le point d'essayer Java. Ma dernière utilisation de la langue remonte à presque 8 ans et était principalement académique.
Je connais assez bien le modèle objet de PHP (version 5) et je code presque exclusivement en OO. J'aimerais maintenant transmettre cette expérience et l'utiliser pour la développer en Java.
D'où je viens:
Ce que j'ai recueilli jusqu'à présent au sujet d'un déménagement vers Java:
Maintenant, j'ai besoin d'un aperçu qui pourrait aider à rendre cette transition plus douce. Mais de la manière dont les gens parlent, Java semble être une toute nouvelle bête avec son propre écosystème. Il semblerait que passer à Ruby ou à Python serait en fait plus simple, ce qui est curieux, car j’estime que Java semble conceptuellement le plus proche de PHP, bien que plus strict et précompilé.
Aussi étrange que cela puisse paraître, très peu de personnes ont publiquement documenté leur expérience de tels mouvements. J'ai cherché google, Amazon et stackoverflow pour des questions similaires et les résultats laissent à désirer. Je ne peux tout simplement pas croire que je devrais commencer comme un novice si je voulais être productif en tant que développeur Web rapide en Java.
Tout le monde est le bienvenu pour répondre, mais je pense un peu que les personnes ayant une expérience précieuse dans les deux langues enrichiraient le plus la discussion.
Je n'essaierais pas d'apprendre un IDE en même temps que d'apprendre une langue. Une transition plus facile consisterait à vous en tenir à votre shell et à votre éditeur de texte habituel et à utiliser les outils conviviaux pour Shell suivants:
javap
de la ligne de commande donnera des signatures de méthode pour toutes les classes de la bibliothèque standard. Identique à php -r
mais donne plus d'informations depuis que Java est saisi.La documentation en ligne pour Java est précise, professionnelle et cohérente dans le ton et le format. Contrairement à PHP où toutes les fonctions sont regroupées dans un seul espace de noms plat, les bibliothèques standard en Java sont des hiérarchies de classes. Vous devez vous familiariser avec cette bibliothèque standard, ce qui signifie connaître hiérarchies + responsabilités : par exemple, vous devez savoir que Java.util.List
est une sous-interface de Java.util.Collection
avec l'ajout d'un concept d'entrées ordonnées. . Avec cette information dans votre tête, une recherche Google pour Java.util.List vous mènera à la Javadoc de la classe, et la Javadoc vous indiquera les signatures de méthodes exactes et vous liera à une sélection d'implémentations concrètes.
Quelques distinctions diverses:
new DOMDocument()
. En Java, org.w3c.dom.Document
est une interface, donc new () ne fonctionnera pas. Javadoc est très précis sur le comportement des instances d'interface une fois qu'elles ont été créées, mais il peut être assez timide et prude de chercher à savoir comment un objet est réellement né. Très souvent, vous devrez chercher des tutoriels et des exemples de code et copier-coller un morceau de passe-partout qui vous donne une instance de DOMDocument ou Java.sql.Connection
ou autre. L'une des raisons pour lesquelles les frameworks tels que Spring sont populaires est qu'ils séparent le code de création d'objet laide et vous présentent un monde où les implémentations d'interface sont là, comme par magie.J'ai effectivement basculé dans la direction opposée. J’ai trouvé que Java fonctionnait très bien dans une grande entreprise où vous travaillez peut-être sur un seul composant, en le confiant à une autre personne qui intègre ce composant dans un système plus grand, qui est ensuite conditionné et transféré à une équipe d’exploitation distincte. où toute cette indirection et cette configurabilité (les abstractions de type FactoryBuilderFactory
, les fichiers web.xml, etc.) ont un sens et sont utiles. Dans une petite entreprise où les programmeurs sont le personnel des opérations, Java est une tâche bien plus ardue. Avec Java, vous devrez vous familiariser avec des concepts tels que le démarrage du processus Java, le suivi du processus Java pour s’assurer qu’il reste en place, le suivi du processus Java pour s’assurer qu’il ne tombe pas dans le coma où il est toujours en vie. ne répondez pas, arrêtez et redémarrez le processus Java avec un minimum de perturbations lorsque vous mettez à jour du code, etc., etc. Si vous avez un personnel d'opérations distinct, c'est bien, son travail lui convient parfaitement. Si vous êtes un programmeur, garder un processus Java peut être distrayant et difficile à bien faire.
Commencez avec le tutoriel Java
http://Java.Sun.com/docs/books/tutorial/getStarted/index.html
Alors allez acheter Head First Java
http://oreilly.com/catalog/9780596004651
Cela vous permettra de parler assez rapidement de la langue, ce qui est essentiel, peu importe ce que vous voulez faire.
À proprement parler, vous ne devez pas un IDE pour travailler en Java. Je code beaucoup en Java depuis plus de 10 ans (et sur d’autres sujets depuis plus de 25 ans) et je n’aime pas beaucoup les IDE. Peut-être que cet indicateur implicite de mon âge fait partie du problème :-) C'est un compromis, comme toute autre chose.
Je vais brancher Stripes dans un cadre simple et sympa, mais c'est surtout parce qu'il est relativement petit et limité. Les grands frameworks tels que Spring sont des écosystèmes "d'évier de cuisine" et l'apprentissage de Java avec l'un de ces frameworks peut atténuer certaines des difficultés, tout en laissant mystérieux d'autres aspects fondamentaux. Encore une fois, c'est une question de préférence personnelle.
C'est bien d'avoir quelqu'un autour de qui connaît la langue. Oh, et à ce point, faites un ami de la documentation de l'API Java. En ce qui concerne les plateformes, l’API Java connaît des hauts et des bas, mais dans l’ensemble, la documentation est au moins assez complète et précise.
Vous voudrez également vous familiariser avec JSP et ses relations avec les architectures de services Web Java et Java, car ce sera ce que vous lierez le plus directement à votre expérience PHP (je pense). .
Le meilleur coup que j'ai fait était de Java à PHP.
Attention à la complexité. La simplicité d’un bon logiciel est avant tout la clé, et c’est pourquoi PHP, combiné à un bon framework, tue Java.
Avec Java, vous risquez de devenir un esclave de votre conteneur de servlets et de votre framework. Choisissez le cadre le plus simple, le plus flexible. Les contrôles et les balises personnalisées sont le diable. Vous allez perdre des journées à apprendre des choses conçues pour accélérer le développement, mais qui sont finalement trop complexes et inflexibles. Java ralentira le développement pour les raisons suivantes: complexité, compilation et types statiques. Vous viendrez à détester les exceptions null pointeur.
Edit: en dehors des outils, Java et PHP sont des langages de style "C" très similaires. Beaucoup plus que Python ou Ruby. C'est le typage statique et les outils complexes qui rendent Java si étranger.
Je recommande de frapper JavaBat à ici
Cela vous donnera de bonnes idées. Il me fallut une année solide dans un environnement professionnel pour maîtriser parfaitement Java et j’ai été capable de passer assez facilement à d’autres OO langues une fois que mes pensées me sont devenues.
Cela semble être un peu un vieux post, mais bon ...
Je suis passé de C # à Java et je viens juste de commencer un rôle et je passe de Java à PHP ...
Tout d'abord: Java est génial :)
pour votre IDE get Eclipse, une fois que vous y êtes habitué, vous n’avez jamais à quitter le IDE (à l’exception des bits SQL). Il gère très bien les projets, vous pouvez télécharger d’autres plugins, tels que les plugins SVN. Il vous permet d’exécuter un serveur Tomcat dans Eclipse et d’envoyer les erreurs directement à la console Eclipse.
pour le framework, j'ai utilisé Struts and Tiles and Torque pour l'ORM, il m'a fallu un certain temps pour les comprendre, mais une fois que nous nous sommes fait amis, je ne peux imaginer aucune autre façon de se développer. Bien que j'imagine que pour un petit projet, ce serait beaucoup de frais généraux!
je suis d'accord avec ce qui précède - obtenez HEADFIRST Java, c'est comme ça que j'ai appris et que je l'ai utilisé pour beaucoup d'autres langues, ils ont une méthode visuelle d'apprentissage beaucoup plus facile que les manuels scolaires purs - bien pour moi de toute façon. J'étais opérationnel en une journée et confiant après quelques semaines, mais j'apprends toujours :)
yip Java est strict, mais on en vient à adorer ça, pour moi, lâcher PHP est un peu bizarre.
vous aurez également besoin de télécharger Tomcat pour exécuter vos bits Java, il est facile de s’exécuter.
Java organise très bien toutes vos classes, aucune de ces ordures 'require_once (some_text_file.php)', juste 'import myClass' et c'est parti.
une des choses qui me dérange, c’est qu’il n’ya aucun moyen de dire quelles bibliothèques JAR vous n’utilisez PAS, donc après quelques années de travail sur un site, votre dossier lib peut devenir un peu brouillon - surtout si plusieurs personnes la suppriment et ajout de fonctionnalités.
Je pourrais continuer.
Paul
Pour mon cas, je n’ai traité qu’avec beaucoup de codage procédural sur le php, alors j’ai sauté en Java, non seulement j’ai trouvé que tout était plus verbeux et moins indulgent que le php (mais je sais maintenant pourquoi cela doit être ainsi, et je j'aime beaucoup Java), mais apprendre à organiser mon code en classe et à apprendre Eclipse IDE a pris environ un an et demi de bricolage, de tâtonnements et d’erreurs, réalisant des choses par moi-même (principalement des applications swing).
Je suppose que créer simplement des choses par vous-même, utiliser le grand nombre de bibliothèques Java disponibles pour construire vos propres choses est amusant, c'est le moyen le plus rapide. De plus, je pense que j'aurais pu gagner plus de temps en lisant attentivement les tutoriels Java Sun Pour gagner encore plus de temps, vous devez effectuer une recherche en profondeur des bibliothèques empêchant de "réinventer la roue".
Bonne chance!