Conseils technos dev web Java

Totoleheros83

Petit chat
Bonjour,

On m'a annoncé récemment que ma mission comme dev web PHP allait se terminer début juin.

Du coup, pour augmenter mes chances de trouver une autre mission rapidement on m'a conseillé d'apprendre une autre techno et j'ai choisi Java (j'aime bien le typage et la syntaxe est quasi la même que PHP donc je serai pas perdu).
Sachant que je suis medior PHP / JavaScript /Symfony et junior SQL
J'ai également fait un peu de Typescript et Docker l

Voici donc mon programme:
Revoir les bases de Java 21 grâce à
Master class Java sur Udemy.
Effective Java,
Programmez en java (Delannoy),
Aide mémoire Java

Quand j'aurai pris mes marques avec des notions qui n'existent pas en PHP:

collections,
Streams (bon la ça fonctionne comme en JS),
Généricite (qui n'existe pas en PHP)
Gradle,
Records,
Connecteur base de données

Revoir les principes de sécurité et mécanismes liés genre Oauth2, Jwt qui sont encore flous pour moi.

Postgresql

Puis Spring, Spring boot
Angular

Est ce que ça vous paraît raisonnable ?

@k o D

Autre chose d'important que j'aurais oublié ?

Merci pour vos conseils :)
 
Dernière édition:
  • J'aime
Les réactions: rtrmhl

rtrmhl

Rust never sleeps
J'ajouterais Apache Maven et Tomcat. Mais tu les as peut-être utilisés avec JavaScript.
 

k o D

Elite
Ok ok, tu pars un peu dans tout là, recentrons un peu le débat :D

0) Choisis ton IDE: IntelliJ IDEA ou VSCode.

1) Avant tout frameworks (Spring Boot, Quarkus, ...), toolings (Maven, Gradle, ...) et "protocoles" de sécurité (OAuth2 & co), concentres toi sur Java même... Tu as déjà de quoi passer ton temps.

Comme tu l'indiques, tu es totalement étranger aux bases du langage (collections, streams, généricité, polymorphisme, ...), donc oui c'est ta priorité.
Je ne connais pas spécialement les livres et formations citées mais j'imagine que ça ne doit pas être mauvais.

2) Une fois cela "acquis", tu peux regarder à des frameworks comme Spring Boot ou Quarkus. Pour les 2, et surtout pour Spring Boot, concentres-toi sur la doc officielle ou récente: Spring Boot étant là depuis des lunes et étant extrêmement populaire (c'est le Symfony de Java) tu trouveras des tonnes d'articles/formations + ou - bien faits mais pas spécialement tenus à jour!
Ne négliges pas non plus les librairies de testing: JUnit (test unitaire) avec Mockito (mock). N'apprends pas toutes les spécificités, concentres sur l'écriture de tes 1ers tests avec ou sans mock etc.

3) Ne perds pas ton temps avec le tooling (Maven, Gradle, connecteur db et co): en tant que junior/médior, on ne te demandera jamais de configurer ces outils mais de savoir les utiliser pour ton développement... bref je trouve que ça vient assez vite et au fur et à mesure tu comprendras les subtilités.

4) Il faut savoir qu'en Belgique nous avons la chance d'avoir la plus grosse conférence Java du monde qui se déroule chaque année à Anvers: Devoxx.
(Ils sont maintenant aussi présent dans d'autres pays)

Le truc très cool avec Devoxx, c'est que toutes les sessions sont filmées et uploadées sur leur channel Youtube!

Ce truc est une mine d'or, spécialement pour pouvoir regarder tranquillement des top speakers comme Venkat Subramaniam, José Paumard, Josh Long, Adam Bien etc...

Si tu commences à fouiller là-dedans, ne t'aventures pas dans le très spécifique ("nouveautés de spring boot x.x.x", "optimize your spring security skillset", etc), restes plutôt sur les "nouveautés du langages".
Pour ça, Venkat Subramaniam et José Paumard font ça très bien. Même de plus anciennes vidéos (6 ans et +) sont toujours adéquates.

Après pour rigoler et découvrir des "curiosités", Adam Bien publie souvent des Shorts: https://www.youtube.com/@bienadam

5) Niveau frontend, si tu veux rester dans du Java, tu as JSF mais oublies. Concentres-toi sur Vaadin qui lui est excellent (mais malheureusement pas assez connu à mon sens) ou alors tu pars sur tous les frameworks js/typescript mais là on quitte le monde du Java.

Sinon de bons sites avec pas mal de resources souvent bien à jour:
https://www.baeldung.com/ et aussi https://mkyong.com/
 
Dernière édition:

THiBOo

Elite
Ok ok, tu pars un peu dans tout là, recentrons un peu le débat :D

0) Choisis ton IDE: IntelliJ IDEA ou VSCode.

1) Avant tout frameworks (Spring Boot, Quarkus, ...), toolings (Maven, Gradle, ...) et "protocoles" de sécurité (OAuth2 & co), concentres toi sur Java même... Tu as déjà de quoi passer ton temps.

Comme tu l'indiques, tu es totalement étranger aux bases du langage (collections, streams, généricité, polymorphisme, ...), donc oui c'est ta priorité.
Je ne connais pas spécialement les livres et formations citées mais j'imagine que ça ne doit pas être mauvais.

2) Une fois cela "acquis", tu peux regarder à des frameworks comme Spring Boot ou Quarkus. Pour les 2, et surtout pour Spring Boot, concentres-toi sur la doc officielle ou récente: Spring Boot étant là depuis des lunes et étant extrêmement populaire (c'est le Symfony de Java) tu trouveras des tonnes d'articles/formations + ou - bien faits mais pas spécialement tenus à jour!
Ne négliges pas non plus les librairies de testing: JUnit (test unitaire) avec Mockito (mock). N'apprends pas toutes les spécificités, concentres sur l'écriture de tes 1ers tests avec ou sans mock etc.

3) Ne perds pas ton temps avec le tooling (Maven, Gradle, connecteur db et co): en tant que junior/médior, on ne te demandera jamais de configurer ces outils mais de savoir les utiliser pour ton développement... bref je trouve que ça vient assez vite et au fur et à mesure tu comprendras les subtilités.

4) Il faut savoir qu'en Belgique nous avons la chance d'avoir la plus grosse conférence Java du monde qui se déroule chaque année à Anvers: Devoxx.
(Ils sont maintenant aussi présent dans d'autres pays)

Le truc très cool avec Devoxx, c'est que toutes les sessions sont filmées et uploadées sur leur channel Youtube!

Ce truc est une mine d'or, spécialement pour pouvoir regarder tranquillement des top speakers comme Venkat Subramaniam, José Paumard, Josh Long, Adam Bien etc...

Si tu commences à fouiller là-dedans, ne t'aventures pas dans le très spécifique ("nouveautés de spring boot x.x.x", "optimize your spring security skillset", etc), restes plutôt sur les "nouveautés du langages".
Pour ça, Venkat Subramaniam et José Paumard font ça très bien. Même de plus anciennes vidéos (6 ans et +) sont toujours adéquates.

Après pour rigoler et découvrir des "curiosités", Adam Bien publie souvent des Shorts: https://www.youtube.com/@bienadam

5) Niveau frontend, si tu veux rester dans du Java, tu as JSF mais oublies. Concentres-toi sur Vaadin qui lui est excellent (mais malheureusement pas assez connu à mon sens) ou alors tu pars sur tous les frameworks js/typescript mais là on quitte le monde du Java.

Sinon de bons sites avec pas mal de resources souvent bien à jour:
https://www.baeldung.com/ et aussi https://mkyong.com/
Ça a l'air compliqué votre vie.
 

cedb3

Elite
Je pensais que quelqu'un avait encore déterré un thread de 2010
 
  • J'aime
Les réactions: Noex

THiBOo

Elite
Pourquoi tu dis ça ?
L'écosystème SAP n'est pas aussi riche ? (J'y connais rien en SAP)
Il est jaloux. A sa place, je n'en pourrai plus de coder des écrans de merde en SAP.
Les "écrans" comme tu dis se codent majoritairement en JavaScript ou peuvent être générés automatiquement via des annotations metadata. Et ce n'est pas vraiment la partie qui m'intéresse le plus, je suis d'avantage dans les process Back-End et plus spécifiquement tout ce qui est API via oData V2, V4 et RAP services.

Bah je sais pas si on peut parler de richesse ou d'uniformisation de protocoles.
Niveau DB par exemple, on ne se soucie "pas trop" de savoir quel type de DB c'est, avant un peu mais surtout pour les équipes de maintenance, pour les dév, à moins d'un besoin spécifique de définir des HINTS au niveau de la DB pr optimiser un query, c'était rare. Aujourd'hui de toute façon on est sur de la HANA Db donc c'est uniformisé.

Pour tout ce qui est "library" ou "framework", on en a aussi, mais ils sont propriétaires et effectivement c'est intégré au système.
Mais si il y a une "richesse" mais elle est différente dans la mesure où les technologies sont "forcées" par le système dans lequel on travaille.
Mais je peux aussi faire une liste de "technologies" (ou plutôt d'outils existants dans l'écosystème): SAPScript, SmartForms, Adobe Forms, Workflow (rien que ça c'est un topic énorme), WebDynpro, Fiori, BOPF, oData, RAP, SOAP, iDoc, Transformation, ...
 
Dernière édition:

k o D

Elite
Niveau DB par exemple, on ne se soucie "pas trop" de savoir quel type de DB c'est, avant un peu mais surtout pour les équipes de maintenance, pour les dév, à moins d'un besoin spécifique de définir des HINTS au niveau de la DB pr optimiser un query, c'était rare. Aujourd'hui de toute façon on est sur de la HANA Db donc c'est uniformisé.
Ouais pareil ici hein. :D

En fait, les query débiles, on ne les écrit même plus, c'est le nom de la méthode et les paramètres qui déterminent le query derrière :p: le framework va créer une implémentation de cette interface au runtime.
 
  • J'aime
Les réactions: THiBOo

Tekuraman

Elite
Les "écrans" comme tu dis se codent majoritairement en JavaScript ou peuvent être générés automatiquement via des annotations metadata. Et ce n'est pas vraiment la partie qui m'intéresse le plus, je suis d'avantage dans les process Back-End et plus spécifiquement tout ce qui est API via oData V2, V4 et RAP services.

Bah je sais pas si on peut parler de richesse ou d'uniformisation de protocoles.
Niveau DB par exemple, on ne se soucie "pas trop" de savoir quel type de DB c'est, avant un peu mais surtout pour les équipes de maintenance, pour les dév, à moins d'un besoin spécifique de définir des HINTS au niveau de la DB pr optimiser un query, c'était rare. Aujourd'hui de toute façon on est sur de la HANA Db donc c'est uniformisé.

Pour tout ce qui est "library" ou "framework", on en a aussi, mais ils sont propriétaires et effectivement c'est intégré au système.
Mais si il y a une "richesse" mais elle est différente dans la mesure où les technologies sont "forcées" par le système dans lequel on travaille.
Mais je peux aussi faire une liste de "technologies" (ou plutôt d'outils existants dans l'écosystème): SAPScript, SmartForms, Adobe Forms, Workflow (rien que ça c'est un topic énorme), WebDynpro, Fiori, BOPF, oData, RAP, SOAP, iDoc, Transformation, ...
Kamoulox
 

gregsting

Chat!
Ouais pareil ici hein. :D

En fait, les query débiles, on ne les écrit même plus, c'est le nom de la méthode et les paramètres qui déterminent le query derrière :p: le framework va créer une implémentation de cette interface au runtime.
En tant que gestionnaire infra/DB/java, c'est bien un point qui fout souvent la merde, la non maitrise de la partie DB et de JPA et co.

C'est là qu'on différencie le bon codeur du mauvais codeur comme on dit dans le Bouchonnois.
 
1er
OP
Totoleheros83

Totoleheros83

Petit chat
En tant que gestionnaire infra/DB/java, c'est bien un point qui fout souvent la merde, la non maitrise de la partie DB et de JPA et co.

C'est là qu'on différencie le bon codeur du mauvais codeur comme on dit dans le Bouchonnois.
Tu veux dire la non maîtrise de SQL et du fonctionnement de la logique relationnelle ?
 

k o D

Elite
En tant que gestionnaire infra/DB/java, c'est bien un point qui fout souvent la merde, la non maitrise de la partie DB et de JPA et co.

C'est là qu'on différencie le bon codeur du mauvais codeur comme on dit dans le Bouchonnois.
Je n'ai pas dit qu'on devait s'en foutre.
J'ai dit qu'il devait se concentrer sur le Java en 1er.

Connaitre JPA c'est essentiel et surtout, si possible, l'éviter (mon opinion) justement parce que les dev sont trop lazy que pour comprendre ce qui se passe derrière (et les N+1 etc etc etc)
 
1er
OP
Totoleheros83

Totoleheros83

Petit chat
Je n'ai pas dit qu'on devait s'en foutre.
J'ai dit qu'il devait se concentrer sur le Java en 1er.

Connaitre JPA c'est essentiel et surtout, si possible, l'éviter (mon opinion) justement parce que les dev sont trop lazy que pour comprendre ce qui se passe derrière (et les N+1 etc etc etc)
JPA c'est un ORM comme Hibernates ?
 

k o D

Elite
JPA c'est un ORM comme Hibernates ?
Non, c'est une standardisation: Java Persistence API
Tu as plusieurs implémentation de cette norme... dont hibernate. ;)

C'est juste qu'Hibernate avance/çait plus vite que la standardisation car il fallait réunir un grand nombre d'acteurs autour de la table.
En gros certaines propositions qu'ils ont faite ont été reprises dans la norme JPA, d'autres non et ils en ont adapté des nouvelles.
 
Haut