JavaRush /Java Blog /Random-IT /Una guida per il futuro sviluppatore Java. Impresa - part...
Diana
Livello 41

Una guida per il futuro sviluppatore Java. Impresa - parte 1

Pubblicato nel gruppo Random-IT
“Non essere troppo orgoglioso dei risultati tecnologici che hai raggiunto. La capacità di distruggere un pianeta non è nulla in confronto al potere della Forza." - Darth Vader sulla Morte Nera. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 1

Introduzione

Probabilmente, le prossime due parti della serie di articoli sono le più attese da molti, e per una buona ragione. Cosa c'è, oltre l'orizzonte, oltre il puro Java? Cosa respirano gli sviluppatori Java in ogni progetto? Considerala una vera e completa guida di autoapprendimento per qualsiasi ingegnere back-end medio il cui linguaggio di programmazione principale è Java. Intendo coprire il più possibile la media ospedaliera e descrivere non solo i framework più popolari, ma anche le soluzioni considerate rilevanti al momento. Naturalmente gli strumenti sono moltissimi e capire quali siano i più importanti e i migliori è una strada che non porta da nessuna parte. Ognuno di voi ha esaminato la sezione "Lavori" su DOU e ha trovato una serie di tecnologie che si ripetono costantemente da un posto vacante all'altro. Capisco che sia impossibile descrivere tutto, ma stilare un quadro generale va bene, quindi proviamo a seguire questa direzione. In qualche modo in passato, su uno dei progetti, si è verificato un imbarazzo piuttosto interessante, che, credo, è stato e si ripete costantemente di tanto in tanto per molti in un settore o nell'altro. L'attività era impostata per allegare un rendering di una pagina HTML alla funzionalità finita semplicemente per mostrare lo stato delle singole entità. Di conseguenza, il mio collega ha deciso di allegare la foglia di timo primaverile, che ha eliminato parte delle dipendenze principali di Spring stessa, quando nessuno usava Spring. E questo è tutto per una pagina normale, che mostra semplicemente lo stato di 2-3 entità. "Non ho mai visto molto senso nell'usare due spade laser... è uno spettacolo secondo me" - Obi-Wan Kenobi. Da un lato, lo sviluppatore ha risolto il problema il più rapidamente possibile, ha installato un framework con il quale aveva esperienza e lo ha integrato nel progetto nel giro di poche ore. Ma d’altro canto, il nostro programma è cresciuto di dimensioni, quindi la domanda diventa semplice: ha fatto la cosa giusta? Per tali compiti atomici, quando sai per certo che questo timoleaf/Spring MVC, ecc. è più grande. Non verrà utilizzato da nessuna parte, è meglio non usarlo affatto. Sono sempre sorpreso da frasi come “Oh! Sì, abbiamo usato l'ibernazione qui! Guarda, va tutto bene, ORM!", e quando viene posta la domanda logica se fosse possibile cavarsela con il normale JDBC qui, alzano le spalle. C'è un'architettura ordinaria, che dovrebbe essere semplice, che dovrebbe essere trattata con trepidazione, non ingombrata da strutture alla moda e super moderne. Come ha detto sopra Obi-Wan, questo non è altro che mettersi in mostra, anche se è necessario sapere come usarli. Il giovane Javaista, secondo me, è il più sfortunato di tutti: tante specifiche, tante librerie da studiare. Solo Java EE ha una documentazione alle stelle. Sorge la domanda: cosa dovrebbe intraprendere un principiante, cosa dovrebbe imparare dopo, cosa dovrebbe fare dopo Horstmann? Risposta semplice: sfortunatamente, incontro molte persone. E inizieremo non con le strutture aziendali, ma con cose più banali e necessarie.

Sistemi operativi

Linux

Oltre a Windows e/o al comodo Yosemite, devi tendere le mani a Linux con un sorriso. Per alcuni progetti è sufficiente essere un utente e sapere come utilizzare la riga di comando, per altri molto di più. Quale metodo è migliore? Ci sono semplicemente tonnellate di libri/tutorial su Internet. Inizia installando Ubuntu o qualsiasi altra distribuzione che ti piace e prova a usarlo come sistema operativo principale per il prossimo mese o due. Sarà molto meglio se inizi a imparare Java all'interno di Linux compilando e manipolando file utilizzando il terminale. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 2La riga di comando di Linux di William Shotts . Leggi questo libro non come un romanzo di "50 sfumature di grigio", ma come un corso interattivo a tutti gli effetti: apri un terminale e ripeti dopo l'autore. Vuoi le nozioni di base e come funziona Linux? Non seguiamo il corso di informatica e sistemi operativi: lo vedremo nella parte successiva. Vai su edx.org e prova il semplice corso di Introduzione a Linux . C'è anche un libro dalla serie sopra menzionata How Linux Works: What Every Superuser Should Know di Brian Ward . Una pubblicazione abbastanza illustrata che presta attenzione al networking, ai dispositivi e alla gestione delle risorse. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 3Andare avanti? C'è un libro eccellente, che tra l'altro ho da qualche parte qui... sì (scuote la polvere)... eccolo! Unix e Linux: Guida per l'amministratore di sistema. Evi Nemeth. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 4Un manuale piuttosto ampio e ben tradotto. Ad essere sincero, personalmente non l'ho padroneggiato, ma mi sono piaciute molto le basi dell'amministrazione (la prima parte). Naturalmente non è possibile ignorare lo scripting della Shell. È meglio provare tutto questo nella pratica, ma dai libri puoi guardare Imparare la bash Shell: programmazione Unix Shell di Cameron Newham. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 5Una così grande quantità di letteratura su Linux/Unix non può essere trattata per intero, specialmente in questo articolo, dove Linux è in secondo piano. Il mio collega di lavoro, che si è mangiato il cane su questa faccenda, mi ha consigliato una cosa piuttosto pratica: scaricare ArchLinux e provare a farlo funzionare. Nel processo imparerai quello che non voglio!

finestre

Nei curriculum dei programmatori c'è una colonna: "Esperienza Windows da più di 10 anni". Certo, mi congratulo con te per il fatto che giochi al banco da quando avevi 10 anni su Windows, ma ti chiedo di non scavarti una buca in anticipo al colloquio, perché su un progetto in cui lavori a stretto contatto con IIS, batch/powershell, Dio non voglia, il registro, il colloquio non sarà molto difficile, e inoltre il sorriso di fronte alla persona seduta. Lida riceverai anche una dose di umiliazione. Ne hai bisogno? La risposta suggerisce se stessa. Metti da parte il tuo Windows piratato dal torrent e prova a installarlo su una sorta di macchina virtuale Windows Server. Studialo non solo dal lato utente e dall'installazione JAVA_HOME. A questo proposito esiste una guida quasi completa sotto forma di libro Mastering Windows Server 2012 R2 di Mark Minasi . Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 6Ad esempio, se usi PowerShell, consulta l'eccellente libro Windows PowerShell in Action di Manning di Bruce Payette . Capisco che sia impossibile sfogliare 1000 pagine, ma almeno puoi tenerlo con te come riferimento. Non serve altro, credo. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 7Di conseguenza, presta attenzione alle lacune nella tua conoscenza dell'uso di Windows e cerca le informazioni che ti interessano su Internet.

Costruisci strumenti

Esperto di

Qual è la cosa più importante da capire in Maven? Ecco i primi passi e compiti:
  1. Scopri cosa fa Maven in ogni fase, puoi persino memorizzarlo. Questo è un successo quasi dell'80% e ti darà un quadro chiaro.
  2. Crea i tuoi progetti sandbox localmente con un sistema multi-modulo, con gestione esplicita delle dipendenze. Prova ad allegare librerie di terze parti, prova a creare qualcosa utilizzandole.
  3. Gioca con il profilo
  4. Comprendi la gestione dei plugin e studia l'elenco dei plugin più popolari sul sito ufficiale.
  5. Scopri come utilizzare al meglio Maven nel tuo progetto. Ad esempio, le build parallele possono ridurre significativamente i tempi di compilazione.
Per un'immersione veloce, vai alla versione russa del sito web Apache Maven e cerca un paio di tutorial su Google. Tuttavia, la terza edizione di uno dei principali libri su Maven non uscirà. Finora questa è la seconda edizione di Maven: The Definitive Guide di Sonatype . Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 8Per il livello avanzato, è adatto creare il proprio plugin. Non preoccuparti di che tipo di plugin devi creare, perché ne esistono già molti! Prova a creare una sorta di analogo, studia le fasi come due e due.

FORMICA

Questo strumento sembra molto più semplice, quindi non c'è molto da imparare qui. Esistono ancora progetti in cui ANT è l'unico strumento di creazione. Questo è assolutamente normale: ANT ha dimostrato di essere uno strumento di costruzione semplice e diretto nel contesto della gestione di piccoli compiti atomici (compiti ant). Naturalmente, qui ci sono molti plugin, proprio come Maven. Per iniziare con ANT, procedi come segue:
  • Prova a manipolare file e cartelle
  • Implementare ordini diversi per l'esecuzione delle attività. Sulla base di ciò, apprendi le dipendenze e la priorità dei compiti in ANT.
  • Decomprimere e/o archiviare in zip. Nelle attività, prova a giocare con il contenuto dell'archivio e così via.
Non è necessario offrire molte risorse per l'apprendimento di ANT. Per un approfondimento più o meno approfondito è sufficiente la pagina ufficiale di Apache Ant. ( ant.apache.org ) e i libri Ant in Action di Steve Loughran . Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 9

Gradle

Per me Gradle è più vicino ad ANT che a Maven, ma può essere a pieno titolo definito il fratellastro di questi due ragazzi. Ha un ciclo di vita simile a Maven e la flessibilità degli stessi compiti di ANT. Bene, la cosa più importante è che Gradle non utilizza XML e, inoltre, puoi farci quello che vuoi se hai più o meno familiarità con Groovy. In generale, una cosa piuttosto gustosa. Non aver paura di utilizzare Ant/Maven/Gradle nel contesto del tuo IDE. Questi strumenti sono strettamente integrati in Eclipse/IDEA e il loro utilizzo nel contesto dell'IDE è abbastanza comodo.

Integrazione continua

Teoria

Questi sono programmi angelici che ti proteggono dal licenziamento. In breve, si tratta di un software che monitora le modifiche nel codice, crea ed esegue test scritti per te. Se tutto va bene dopo ogni commit/unione, la build si illumina di una piacevole luce verde/blu. Non appena rompi qualcosa, il sistema CI lo segnalerà immediatamente. Tuttavia, una piccola teoria: questo è classico! Integrazione continua: miglioramento della qualità del software e riduzione dei rischi di Paul Duvall . (noto anche come "Integrazione continua" in russo) Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 10Questo libro discute anche della creazione del proprio sistema CI. Diamo un'occhiata alle due soluzioni più popolari in questo settore.

Jenkins

Jenkins, alias Hudson. Applicazione aperta, amichevole e facile da usare. Per acquisire maggiore familiarità con Jenkins, provare quanto segue:
  1. Scaricalo sul tuo computer. Installa e configura JDK, Maven, ANT e tutto il necessario per il progetto.
  2. Crea il primo lavoro e specifica la posizione del tuo progetto, ad esempio il pom.xml principale. Eseguilo, assicurati di avere una sorta di test in modo che sia chiaramente visibile.
  3. Impara a eseguire il tuo progetto con diverse impostazioni e opzioni.
  4. Collega diversi plugin e guarda come funzionano insieme al tuo progetto.
  5. Costruisci trigger per diversi lavori. Crea una piccola pipeline.
  6. Esplora la DSL e prova a integrarla con Jenkins.
  7. Configura uno slave da un altro computer e/o rendilo una macchina normale per l'esecuzione delle build.
  8. Crea build notturne.
Dai libri, basta leggere Jenkins: The Definite Guide di John Ferguson Smart . Una guida chiara con molti screenshot. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 11

TeamCity

Sì, TeamCity non è gratuito, ma guarda quanto è ben integrato nell'ecosistema di prodotti JetBrains. Intellij Idea e TeamCity sono una grande unione. In generale, se hai già familiarità con Jenkins, TeamCity non sarà per te una foresta oscura e viceversa. Invece di agenti schiavi, gli stessi trigger e così via. Ma a differenza di Jenkins, TeamCity vanta funzionalità sorprendenti come, ad esempio, l'esecuzione remota, nota anche come commit pre-testato, molte più statistiche visive e molto altro ancora. Mi piace molto la guida per l'utente su YouTube, realizzata dalla stessa JetBrains ( Guida per l'utente di TeamCity (Parte 1 di 9) - Introduzione ). Trovo che TeamCity sia intuitivo e che la documentazione sia di alto livello. Ma se pensi che ci sia un libro che vale la pena dare un'occhiata, lascialo nei commenti. Naturalmente ho elencato solo una piccola parte di questi sistemi CI, ma abbiamo tutto con una portata limitata. Probabilmente la migliore guida per l’apprendimento è la pratica. L'ho installato sul mio computer, l'ho avviato, ho bloccato/ripristinato le build e sono andato a letto. E poi puoi tranquillamente portarmi il libretto dei record (se vuoi :).

Sistema di controllo della versione

Non ha senso parlare molto di VCS. È semplicemente qualcosa che dovrebbe esistere e senza il quale la gestione dei progetti sarebbe come l'era mesozoica. Similmente ai sistemi CI, diamo un'occhiata a due delle soluzioni più popolari: Git e SVN.

Idiota

Il nostro Git ha dimostrato di essere un sistema di controllo della versione distribuito stabile. Inizia a imparare da qui e leggi tutti i capitoli con Git già configurato. Poi c'è una meravigliosa serie di tutorial interattivi di Code School. C'è anche una breve guida chiamata Try Git: Code School . Dai libri posso consigliare Version Control con Git di Jon Loeliger Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 12 Se sei così abituato alla tartaruga (TortoiseSVN, nota dell'autore) e hai paura della console, puoi, ovviamente, scaricare il suo analogo TortoiseGit, ma, secondo me, molto più piacevole ed esteticamente gradevole La soluzione è un prodotto di Atlassian - SourceTreeApp. Puoi esercitarti con i repository remoti, poiché ci sono abbastanza servizi host su Internet. Se vuoi, allenati localmente. NO? Quindi crea un account su GitHub e lavora in modalità completa: fai un paio di commit, esegui il fork di qualche progetto opensource, fai un paio di fusioni tra rami e così via.

SVN

Un altro VCS altrettanto popolare è SVN. Questo sistema non può vantarsi di distribuzione. Ognuno di loro ha i propri approcci, i propri pro e contro. Assicurati di leggere l'interessante conversazione tra un principiante e un utente SVN . C'è un libro gratuito da read-bean.com con una traduzione russa. Sarà estremamente utile anche un minicorso di TutorialsPoint . Non perderti il ​​sito web ufficiale di Apache subversion.apache.org . Il client più interessante per me è il già citato TortoiseSVN. Tra i libri si segnala: Version Control with Subversion di Michael Pilato . Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 13Mi è piaciuto perché presta attenzione all'amministrazione del server SVN stesso. Spero di non aver tralasciato i punti principali.

Strumenti di test

Sarebbe una buona idea capire nei tuoi piccoli progetti sandbox cosa sono i test unitari, i test di integrazione e di regressione. JUnit La teoria dei test unitari è ben descritta nei libri dell'articolo precedente. In particolare, Clean Code descrive junit addirittura come una delle librerie più popolari in quest'area. Ma quando si tratta di JUnit nello specifico, c'è un piccolo libro fantastico intitolato Practical Unit Testing with JUnit e Mockito di Tomek Kaszanowski Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 14 Naturalmente, c'è di più oltre a JUnit e Mockito. Qui l'autore presenta Matchers, offre esempi di test parametrizzati e illustra brevemente TDD. C'è anche un libro uscito di recente. Questo è Pragmatic Unit Testing in Java 8 di Jeff Langr. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 15 L'autore introduce Hamcrest, descrive le migliori pratiche e, ovviamente, Java 8. Puoi tranquillamente leggere dopo il libro di Tomek. A proposito, riguardo al TDD. Non voglio sollevare un holivar sul fatto che valga la pena usarli, se sia positivo o negativo, se i clienti ne abbiano bisogno. Ricorda solo: lavorare in TDD non è una novità, molti progetti utilizzano questa metodologia, e per molte persone è l'unica e indiscutibile regola. In teoria, puoi leggere i classici. Kent Beck - Sviluppo basato sui test: con l'esempio . Ciò che mi è piaciuto di più è stata la parte sui modelli TDD. Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 16Sorprendentemente, c'è un buon corso in prima persona: Let's Play TDD (200 video!) su Youtube. Non meno interessante è la discussione di Fowler sull’opportunità o meno di utilizzare TDD, se rovina il design e simili. Ricordatelo una volta per tutte: TDD non crea un cattivo design, lo crei tu. Se usi di più BDD (uno non interferisce con l'altro) e, ad esempio, usi Cucumber in un progetto, allora questo è un piano leggermente diverso. Un buon libro su questo argomento è Manning BDD in Action: Behavior-driven development for the Whole Software Lifecycle di John Ferguson Smart . Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 17A proposito, John Ferguson Smart sta promuovendo attivamente questo argomento tra le masse. Se sei uno Scrum Master o un PM che finalmente non si fa male agli occhi, ma si diverte a guardare i test "quando-se-allora", assicurati di seguire John su Twitter . Per quanto riguarda Cucumber, guarda l'implementazione Java sul sito ufficiale e leggi il libro The Cucumber Book: Behavior-Driven Development di Matt Wayne . Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 18

Librerie di terze parti

È importante poter utilizzare le librerie più diffuse dove necessario: semplificano la vita quotidiana di ogni sviluppatore Java. Le soluzioni più popolari includono quanto segue: Joda Time. Offre la sostituzione completa delle scomode data e ora native con il più conveniente JodaTime. Ecco un buon riferimento . Tieni presente che se stai già utilizzando Java 8, JodaTime non ti sarà di grande aiuto. Il fatto è che la nuova API DateTime ha completamente sostituito questa libreria e in alcuni punti l'ha persino copiata e incollata abilmente. Secondo l'articolo dell'autore , ogni classe Joda può essere comodamente sostituita con un analogo da java.time. Google Guava. In molti modi, Java 8 sostituisce addirittura Guava. Gli stessi oggetti, API Stream, Predicato Java e molte altre cose suggeriscono di sostituirlo e di non utilizzarlo affatto. Ripeto, se non hai Java 8, non c'è niente di meglio di questa guida e delle tue mani dirette.

Apache Commons

Questo mostro non è così facile da affrontare: circa 40 librerie per tutte le occasioni, dal noto commons.lang alla validazione xml, da DBUtils a commons.io . Naturalmente non è necessario conoscere tutto, ma i libri e i tutorial dei libri di cucina sarà utile avere con sé. Ad esempio, per capire in cosa consiste Apache Commons, puoi consultare il Jakarta Commons Cookbook di Timothy O'Brein Una guida per il futuro sviluppatore Java.  Impresa - parte 1 - 19

Conclusione

L'impresa è così vasta che sarebbe stupido iniziare a discutere di JavaEE e di altri framework senza tutto ciò che circonda questa impresa. Pertanto, nella seconda parte ci concentreremo su ciascun livello dell'architettura multilivello, considereremo i servizi e così via. Grazie per la vostra attenzione. Fine della prima parte. Parti precedenti della serie:
  1. Una guida per il futuro sviluppatore Java. Nozioni di base su Java
  2. Una guida per il futuro sviluppatore Java. Codice elegante
Originale con DOU
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION