Quels livres me conseilleriez-vous ?

Pour apprendre ce langage

a marqué ce sujet comme résolu.

Salut à tous,

Après avoir fait du PHP et du Python, j'ai envie de découvrir le Java. J'en ai fait à en école, j'ai vu quelques designs patterns, mais sans vraiment pousser.

Je chercherais donc un livre avec les caractéristiques suivantes :

  • Français/Anglais, peu importe tant que c'est de qualité
  • Assez détaillé, présentant les bonnes pratiques
  • M'introduisant au Java moderne, aux frameworks existants, etc (notamment Web)

Est-ce que l'un de vous pourrait me conseiller ça ? Merci d'avance ;)

Salut,

Java tu peux regarder le livre qu'il y a sur wikibooks. Il est pas trop mal. Il manque des choses mais ça va à l'essentiel. Cependant j'ai déjà des connaissances en java. Donc je sais de quoi ça parle, etc. Pour quelqu'un n'ayant jamais touché à Java, je sais pas si c'est l'idéal (quoi que si tu as les concepts derrière en tête, ça devrait pas être un soucis).

Bye

Moi je ne peux que te conseiller ce lien. Doc officiel d'Oracle sur Java SE 8, sous forme de tutoriel, et qui est sans aucun doute la doc la plus à jour. Tu peux apprendre la base de Java sur ce lien, puis aller chercher les tutoriels sur Java EE dans le reste du site.

+2 -0

Pour les bases de bases j'ai pas vraiment de ressource malheureusement :( A part la doc d'Oracle éventuellement comme Phigger l'a précisé.

Si tu veux te mettre à niveau uniquement sur Java 8, tu peux acheter ce livre. Comme souvent chez cet éditeur et dans cette collection, les bouquins sont d'une très bonne qualité.

Si tu as déjà les bases et que tu es en mesure de comprendre un peu les problèmes classiques rencontrés en Java, ce bouquin est vraiment excellent. Pour moi c'est vraiment la référence pour les problématiques propres à Java (avant la version 8).

EDIT : j'avais pas lu complètement la question.

Pour Java moderne, démarre vraiment avec Java 8 et sois attentif aux codes que tu rencontres / lis. Une immense majorité des cours sur le web utilisent des APIs ou des classes complètement dépréciées, et font les choses (disons-le clairement) de façon très sale. Les dernières versions de Java ont apporté des innovations majeures, et rappelons-le Java 7 arrive en fin de vie.

Le web en Java, y'a pas mal de façon d'aborder la chose. L'approche classique c'est JavaEE. On en pense ce qu'on veut je vais pas prendre partie. Ça peut être intéressant à regarder. Par dessus ça, frameworks qui ressemblent un peu à ce qui se fait ailleurs ont vu le jour (Seam, Spring, …). Ça peut valoir le coup également.

Faut savoir quand même que ce n'est plus trop "à la mode" (y'a énormément de boulot quand même hein, je parle de hipsterisme là) comme façon de travailler. Aujourd'hui la tendance serait plutôt double : soit un framework "tout en un" (Symfony, Django, Rails, Play 2, Grails) pour la partie très descriptive des applications web modernes (en gros des écrans de back office par exemple) et ensuite la grosse armada JavaEE (les services middleware, files JMS, …) ont tendance à laisser la place à des architectures distribuées et moins monolithiques (qu'on appelle parfois des microservices) (cf. NodeJS, Akka, Tornado, …).

Si tu as envie de faire du web en JavaEE par curiosité, ça me semble pas super intéressant très honnêtement. Si c'est pour chercher un job, pas de soucis t'en trouveras un dans ce domaine. Si c'est pour te faire plaisir, mouais, pas sûr que ce soit très très fun :\

Bon courage dans ton apprentissage.

+0 -0

Ok j'avais pas vu la date du bouquin, effectivement c'est pas une bonne idée.

Faut savoir quand même que ce n'est plus trop "à la mode" (y'a énormément de boulot quand même hein, je parle de hipsterisme là) comme façon de travailler. Aujourd'hui la tendance serait plutôt double : soit un framework "tout en un" (Symfony, Django, Rails, Play 2, Grails) pour la partie très descriptive des applications web modernes (en gros des écrans de back office par exemple) et ensuite la grosse armada JavaEE (les services middleware, files JMS, …) ont tendance à laisser la place à des architectures distribuées et moins monolithiques (qu'on appelle parfois des microservices) (cf. NodeJS, Akka, Tornado, …).

Justement je suis tombé sur un benchmark qui m'a assez étonné, notamment sur la performance de certains frameworks Java. C'est en partie pourquoi je cherchais à en savoir plus. D'autre part, sans forcément chercher un job de développeur Java, j'ai l'impression que c'est un langage qu'on retrouve souvent dans de "grosses" applis (banques, grosses boîtes, etc) et qu'étant certainement amené à travailler là-dedans, je me dis qu'une expérience correcte en Java serait un plus.

Qu'en penses-tu ? :)

Les frameworks (ou toolkits en fait, c'est pas réellement des frameworks au sens propre du terme) qui sont "top of the charts" dans ce genre de benchmarks sont très très loin de JavaEE. C'est une toute autre approche.

Par exemple undertow, qu'on retrouve dans la liste, permet à la fois l'approche JavaEE classique (si j'en crois la doc, j'ai jamais essayé) mais surtout (et c'est là-dessus qu'il explose le benchmark) de fonctionner avec (je cite) : "a low level non-blocking handler". Ça c'est l'approche asynchrone employée par NodeJS notamment (et netty, et Vert.x, qui sont eux-aussi très bien classés). Ça donne effectivement des performances très au-dessus de JavaEE, mais c'est pas vraiment comparable.

La JVM est (aujourd'hui) extrêmement performante. Pour l'anecdote, JRuby est (dans certains cas) nettement plus performant que…

…Ruby :\

Donc c'est pas spécialement étonnant de retrouver des outils qui utilisent les APIs I/O très bas niveau (ce qu'ils appellent "low level I/O" ou "asyncIO" ou "NIO") en Java aussi haut dans les benchmarks. Par contre, clairement ce n'est pas ce qui est recherché en termes de compétences pour ce que tu appelles les "grosses" applis. Les banques en effet, les grosse boîtes de e-commerce également. Généralement c'est plus JavaEE classique (à confirmer avec SpaceFox si tu lis son interview sur le site) voire EJB/Spring/Hibernate/Seam/… qui sont de grosses machineries très lourdes et qui fonctionnent sur un mode complètement différent.

J'ai l'impression que c'est en train d'évoluer, mais c'est vraiment un ressenti "boule de cristal". Et qu'effectivement le coeur de ce genre d'applications très lourdes et souvent un peu monolithiques est en train de se tourner vers des technos très performantes comme celles que tu as vues dans le benchmark. D'où mon commentaire précédent.

Bon par contre effectivement, pour les deux y'a besoin de connaître JavaSE (la base, quoi), donc rien n'est perdu.

+0 -0

Si tu veux travailler dans le milieu bancaire, un bon investissement sur l'avenir est probablement Cobol. Oui je sais ça fait bizarre de dire "avenir" et Cobol dans la même phrase, mais c'est un fait : les développeurs Cobol vont être recherché.

Kje

Cobol hahahahahahahahahahaha, j'en ai fait il y a 3 ans lors de mes études, 2 ans après il était supprimé du programme. Il faut arrêter croire que les banques engage à retour de bras des cobolistes, les banques engagent peu et généralement ce n'est plus dans ce vieux langage dinosaurussien. La puissance de calculs se trouvent dans les langages moderne.

En ce qui concerne Java pourquoi ne simplement pas suivre le tutos sur ce site ? Mis à par la partie swing il est assez complet.

Le web en Java, y'a pas mal de façon d'aborder la chose. L'approche classique c'est JavaEE. On en pense ce qu'on veut je vais pas prendre partie. Ça peut être intéressant à regarder. Par dessus ça, frameworks qui ressemblent un peu à ce qui se fait ailleurs ont vu le jour (Seam, Spring, …). Ça peut valoir le coup également.

Faut savoir quand même que ce n'est plus trop "à la mode" (y'a énormément de boulot quand même hein, je parle de hipsterisme là) comme façon de travailler. Aujourd'hui la tendance serait plutôt double : soit un framework "tout en un" (Symfony, Django, Rails, Play 2, Grails) pour la partie très descriptive des applications web modernes (en gros des écrans de back office par exemple) et ensuite la grosse armada JavaEE (les services middleware, files JMS, …) ont tendance à laisser la place à des architectures distribuées et moins monolithiques (qu'on appelle parfois des microservices) (cf. NodeJS, Akka, Tornado, …).

Si tu as envie de faire du web en JavaEE par curiosité, ça me semble pas super intéressant très honnêtement. Si c'est pour chercher un job, pas de soucis t'en trouveras un dans ce domaine. Si c'est pour te faire plaisir, mouais, pas sûr que ce soit très très fun :\

Bon courage dans ton apprentissage.

Javier

Un architecte logiciel qui m'a donné cours disait "les développeurs JavaEE sont les chirurgiens de l'informatiques" effectivement pour un projet perso je ne vois aucune utilité à s’attaquer à JavaEE c'est bien trop complexe à mettre en place. C'est utile pour les très gros sites mais nullement pour les petit, l'architecture est trop lourde. Maintenant si ça t’intéresse tu peux toujours tenter mais avant ça faudra déjà te farcir la brique de JavaSE xD !

Cobol hahahahahahahahahahaha, j'en ai fait il y a 3 ans lors de mes études, 2 ans après il était supprimé du programme. Il faut arrêter croire que les banques engage à retour de bras des cobolistes, les banques engagent peu et généralement ce n'est plus dans ce vieux langage dinosaurussien. La puissance de calculs se trouvent dans les langages moderne.

J'ai jamais dit qu'ils engagent a tour de bras mais 2 remarques :

  • Je connais plusieurs personnes rellement qui ont été embauché en début de carrière pour faire du Cobol. Puisqu'ils galèrent, ils les forment mais si ça existe.
  • Tu devrais lire le liens que j'ai filé. Il explique bien que oui les écoles ne le proposent majoritairement plus et pourquoi ce sont des profiles qui vont être très recherchés. Pour résumer, l'age moyen des dev COBOL est à ~55 ans et que du COBOL intervient encore dans 70% de toutes les transactions financière.

Je me doute bien que ce n'est pas ce qu'il a envie de faire.

NB:

les banques engagent peu

Mouais, dans mes dernières recherches de postes c'est pas ce qui manquait les annoncent dans le financier et le bancaire.

Cobol hahahahahahahahahahaha, j'en ai fait il y a 3 ans lors de mes études, 2 ans après il était supprimé du programme. Il faut arrêter croire que les banques engage à retour de bras des cobolistes, les banques engagent peu et généralement ce n'est plus dans ce vieux langage dinosaurussien. La puissance de calculs se trouvent dans les langages moderne.

J'ai jamais dit qu'ils engagent a tour de bras mais 2 remarques :

  • Je connais plusieurs personnes rellement qui ont été embauché en début de carrière pour faire du Cobol. Puisqu'ils galèrent, ils les forment mais si ça existe.
  • Tu devrais lire le liens que j'ai filé. Il explique bien que oui les écoles ne le proposent majoritairement plus et pourquoi ce sont des profiles qui vont être très recherchés. Pour résumer, l'age moyen des dev COBOL est à ~55 ans et que du COBOL intervient encore dans 70% de toutes les transactions financière.

Je me doute bien que ce n'est pas ce qu'il a envie de faire.

NB:

les banques engagent peu

Mouais, dans mes dernières recherches de postes c'est pas ce qui manquait les annoncent dans le financier et le bancaire.

Kje

Pour avoir chercher un stage et job Cobol je peux dire qu'au sein de la Belgique c'est 0 de chez 0. Maintenir le Cobol il le faudra mais former des gens j'y crois plus trop, des logiciels existent pour traduire du Java en Cobol malheureusement quand sa coince le Javateux n'y comprennent rien car ils n'ont pas la connaissance du Cobol.

Ils n'engagent pas de bac+2 ou +3 dans les banques ce sont généralement des bac+5.

Et puis le Cobol face aux langages d'aujourd'hui c'est à vomir :D !

Fin de la parenthèse cobolienne. Retour au café de Java.

C'est utile pour les très gros sites

Quand tu sors des trucs comme ça, ça serait intéressant d'étayer ton propos.

La question que va se poser un débutant (et surtout quelqu'un qui est curieux comme Théo et qui cherche à comprendre JavaEE) c'est "Pourquoi ?".

Qu'est-ce-qu'apporte JavaEE dans le cadre d'un "gros site" comme tu dis. Parce que ce que t'as dit ton architecte logiciel en cours, on s'en fiche pas mal :(

Dommage qu'on ne puisse pas (encore ?) pinger les gens. Parce que c'est vraiment une question à laquelle @SpaceFox répondrait très bien, je pense.

+0 -0

C'est utile pour les très gros sites

Quand tu sors des trucs comme ça, ça serait intéressant d'étayer ton propos.

La question que va se poser un débutant (et surtout quelqu'un qui est curieux comme Théo et qui cherche à comprendre JavaEE) c'est "Pourquoi ?".

Qu'est-ce-qu'apporte JavaEE dans le cadre d'un "gros site" comme tu dis. Parce que ce que t'as dit ton architecte logiciel en cours, on s'en fiche pas mal :(

Dommage qu'on ne puisse pas (encore ?) pinger les gens. Parce que c'est vraiment une question à laquelle @SpaceFox répondrait très bien, je pense.

Javier

J'ai dis l'architecture était lourde … Ok ce n'est peut-être pas explicite mais crois-tu que si je lui parle d'une architecture ntiers avec mise en place de beans, d'ejb, de dao, de contexte de persistance, d'objets stateless/stateful, JPA,Servlet,… et il y comprendra quelque chose ? Moi j'ai des doutes.

D'accord je pourrais faire plus simple et paraître moi agressif dans ma réponse. Ce que je vais faire :p !

JavaEE c'est beau, c'est robuste, ces maintenable au possible (quand c'est bien penser),… Mais c'est long à mettre en place et ça l'est encore plus si on veut faire proprement les choses.

Il faut :

  1. avoir une très bonne maîtrise du JavaSE pour embrayer sur le EE.
  2. bien maîtriser le concept de architecture nTiers.
  3. bien maîtriser le pattern MVC et MVC2 et les patterns qui s'y cachent.
  4. bien comprendre le principe de persistance de données.
  5. connaitre la différence entre les serveurs Jboss,TomCat,Hibernate car ils ne permettent pas tous la même chose. Et une fois choisi savoir l'installer et le configurer correctement.
  6. Bien comprendre la philosophie web de Java avec ses beans,EJB,Servlet…

Contrairement ou en Php avec un serveur Wamp,Xamp (facile à installer) et une connaissance correcte du MVC (sans rentrer dans les détailles du pattern obersver,composite,stragtegy,…) permettent déjà de faire de belles petites réalisations.

Voilà ça te paraît un peu plus explicite :p ? !

+1 -0

Que Java EE ne soit pas adapté au site web de Mme MICHU, c'est indéniable.

Mais dire que c'est reservé aux gros sites, c'est une aberration.

Java EE offre depuis des années un profil léger, qui ne nécessite pas toutes les connaissances que tu mentionnes ici. Il est très simple de construire quelque chose de propre, scalable et maintenable en Java EE, sans avoir besoin d'un bac +5. Et le nombre de lecteurs de mon cours (sur OC principalement) qui m'ont confié avoir réussi leurs projets et travaux en ne suivant que ce que je leur y enseigne me suffit pour m'en convaincre. :p

+3 -0

Que Java EE ne soit pas adapté au site web de Mme MICHU, c'est indéniable.

Mais dire que c'est reservé aux gros sites, c'est une aberration.

Java EE offre depuis des années un profil léger, qui ne nécessite pas toutes les connaissances que tu mentionnes ici. Il est très simple de construire quelque chose de propre, scalable et maintenable en Java EE, sans avoir besoin d'un bac +5. Et le nombre de lecteurs de mon cours (sur OC principalement) qui m'ont confié avoir réussi leurs projets et travaux en ne suivant que ce que je leur y enseigne me suffit pour m'en convaincre. :p

Coyote

Je n'ai jamais dit qu'il fallait avoir un bac+5 pour utiliser Java EE.

Qu'entends-tu pas profil léger ? ! Utiliser JSLT + Servlet + Core avec le modèle DAO, donc s'arrêter au chapitre 6 de ton cours ? Si c'est ça je suis d'accord avec toi :) !

PS : moi aussi c'est grâce à ton tuto que j'ai pu réussir mon projet de fin d'étude en Java EE et démystifié cette chose qui m'était obscure :p !

Non, ce n'est pas ce que j'entends. Profil léger = Servlet, EJB (locaux), JSP, JSF, JPA, CDI, et quelques autres que j'oublie.

Dans le profile full, tu trouves tout le reste (EJB distants, JAX, JMS, RMI, etc.).

Coyote

D'accord, je vois mieux ou tu veux en venir.

C'est l'apprentissage qui me semble plus long et plus complexe, une fois le concept acquis et bien compris ça roule comme sur des roulettes. Je trouve l'architecture JavaEE ainsi que tous ses aspects techniques moins triviales que ceux de PHP sans vouloir dénigrer ce dernier.

Je ne vous cacherai par que l'architecture web de Java est pour moi un chef d'oeuvre de l'informatique de ces 20 dernières années, les EJB distants, là c'est l'apologie, le nirvana du web :D

PS1 : je suis développeur C# mais j'aime JAVA et la Javanaise :D

PS2 : Si javabien javamine :D

+1 -3
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte