Je suis sur le point de commencer ma première carrière professionnelle en tant que développeur de logiciels, et je vais probablement écrire beaucoup de code Java. Je ne sais pas grand-chose sur ce que j'écrirai spécifiquement, et en plus, j'ai un intérêt assez large quand il s'agit de coder de toute façon.
Pour des raisons qui ne valent pas la peine d'être discutées, mon dernier stage m'a fait coder uniquement pour les SDK Java 1.3 et 1.4. De plus, mes études universitaires se sont principalement concentrées sur les algorithmes, les structures de données et d'autres théories, pas sur les fonctionnalités de langage ou les bibliothèques.
Donc, avec ce qui précède à l'esprit, quelles fonctionnalités, classes, etc. dans la version actuelle de Java (quel nombre sommes-nous actuellement, de toute façon?) Valent mon temps pour lire et pourquoi? Qu'est-ce que j'ai raté depuis 1.4.2 qui vous facilite la vie en tant que programmeur?
Des exemples et des histoires sur la façon dont vous avez découvert un package particulier ou un tel et l'avez utilisé seraient également formidables.
Réponses:
Les changements que je considère les plus importants sont:
Lisez aussi Quel Java visez-vous? , pour mieux comprendre chacune des trois versions.
la source
for
boucles améliorées "?Le changement le plus important dans votre vie de programmation quotidienne est l'introduction de génériques qui seront très probablement utilisés dans chaque nouveau module que vous serez invité à écrire, et c'est une nouvelle syntaxe déroutante.
Les génériques sont le mécanisme permettant par exemple
List
à a de contenir des chaînes au lieu d'objets nus, où le compilateur impose qu'un élément à mettre dans la liste soit une chaîne, et il sait que lorsque vous extrayez un élément d'une liste, c'est une chaîne .Cela fait de meilleurs programmes car vous évitez le cast d'exécution explicite vers le type cible (qui est une source fréquente d'erreurs si vous vous trompez) et l'IDE peut vous aider à faire tout le sale boulot car il en sait beaucoup plus sur votre code que il l'a fait quand ce n'était qu'une liste d'objets.
Joshua Bloch a écrit une bonne introduction aux génériques, qui est disponible comme exemple de chapitre sur http://java.sun.com/docs/books/effective/
la source
def whatever
....id
qui estdef
ouvar
.... mais là encore, la sécurité de la frappe 100% statique est incroyable, vraiment.Autoboxing est une fonctionnalité intéressante introduite avec Java 5. Tout comme en C #, le compilateur effectue maintenant une conversion automatique entre les types primitifs (de base) et leurs classes d'encapsulage d'objets correspondantes (int en entier, etc.) et inversement. Cela rend le travail avec Java Collections beaucoup moins pénible.
Pour chaque boucle, je pense que c'était aussi nouveau dans Java 5. Il facilite l'itération sur les tableaux (et les collections), car il élimine une grande partie de l'encombrement habituel impliquant la configuration et la gestion d'une variable d'index ou d'itérateurs. Par exemple:
la source
Enums , pour remplacer la statique et les constantes finales et vous aider à supprimer les références aux chaînes et aux nombres magiques. Un exemple tiré des bonnes personnes au soleil / oracle :
et
la source
java.util.concurrent a été introduit dans la version 1.5. La meilleure ressource pour l'apprendre est (probablement) le livre Java Concurrency in Practice . La simultanéité à mon humble avis est l'avantage concurrentiel le plus important de Java par rapport à toute autre chose, donc il vaut vraiment la peine de bien le savoir.
la source
java.util.concurrent
aux primitives de concurrence est comme la gestion automatique de la mémoire à la gestion manuelle de la mémoire. L'utilisation de ce dernier n'est qu'une recette pour passer plus de temps sur le débogage et n'offre aucun avantage.Eh bien, cela
StringBuilder
m'a aidé à accélérer mon programme. C'est l'équivalent de laStringBuffer
sécurité sans filetage.la source
+
des chaînes utilise automatiquement StringBuilder au lieu de StringBuffer pour le niveau source 1.5 et supérieur.Je vais vous aider en catégorisant la réponse utile de @ykombinator. Sa liste est une liste des éléments que vous utiliserez au quotidien lors du développement java "général".
Impact faible et faible difficulté:
Impact élevé et difficulté moyenne:
Impact élevé et difficulté élevée:
Impact faible et élevé difficile (ne sera utilisé que si vous effectuez un filetage avancé)
Je vous suggère donc de lire la documentation / l'aide sur les pièces à faible impact et à faible difficulté - elles sont faciles à ramasser. Passez un peu de temps sur les annotations et les génériques - les annotations sont très utiles et les génériques peuvent devenir assez compliqués.
Ne regardez le nouveau contenu de concurrence que si vous avez besoin de faire du filetage.
la source
Comme je ne peux pas commenter parce que j'ai moins de 50 ans, je vais laisser une réponse. Cela a déjà été mentionné mais je le répéterai encore: Annotations! Ce type de métadonnées est devenu la chose la plus importante de mes années d'expérience Java. Bien utilisé comme certains frameworks, il rend le code beaucoup plus concis et propre. Par exemple, les annotations peuvent:
Et bien sûr, vous pouvez créer vos propres annotations et savoir si une méthode, une classe ou un champ est annoté par réflexion.
la source
Apprendre par l'exemple fonctionne pour moi
Voici un exemple rapide de Java 6 idiomatique
Ne vous embêtez pas avec Java5, il est obsolète par rapport à Java6.
Étape suivante, les annotations. Ceux-ci définissent simplement les aspects de votre code qui permettent aux lecteurs d'annotations de remplir la configuration standard pour vous. Prenons un service Web simple qui utilise la spécification JAX-RS (il comprend les URI RESTful). Vous ne voulez pas vous embêter à faire tout le méchant WSDL et déblayer avec Axis2, etc., vous voulez un résultat rapide. Bon, faites ceci:
Coup. Avec un peu de magie de configuration dans votre web.xml, c'est parti. Si vous construisez avec Maven et que le plugin Jetty est configuré, votre projet aura son propre petit serveur Web dès la sortie de la boîte (pas de tripotage avec JBoss ou Tomcat pour vous), et le code ci-dessus répondra aux URI des forme:
Travail accompli.
la source
Wow, c'était une explosion du passé! Je n'ai pas utilisé Java depuis 4 ans maintenant - et rien n'a changé du tout depuis!
Il y a une liste de fonctionnalités par version , mais voici le bit important (plagié bien sûr) ...
J2SE 5.0 (30 septembre 2004)
Java SE 6 (11 décembre 2006)
C'est à peu près ça. Java SE 7.0 semble plus intéressant mais n'est pas encore sorti.
Compte tenu du nombre de nouvelles fonctionnalités de langage et d'API ajoutées à C # au cours des 4 dernières années, je suis assez étonné. Que s'est-il passé chez Sun / Oracle?
la source