Come familiarizzare con "cosa succede sotto Java"? [chiuso]

5

Non ho studiato CS né IT. Sono appena diventato uno sviluppatore, ora lavoro con Java. In realtà, dato che ora lavoro con una grande azienda che scrive applicazioni web ad alta scalabilità, penso di aver bisogno di essere migliore con i dettagli.

Non ho idea di cosa succede sotto Java. Prestazioni Java, Java lato server potrebbe essere la parola d'ordine? !! Sono molto povero con quei dettagli più di basso livello, ma non so dove guardare onestamente.

Ho iniziato a cercare alcune parole chiave in Amazon, ho finito per leggere libri come "programmatore pragmatico", "codice pulito", "codice completo" che IMO non sono quello che sto cercando.

Potresti fornirmi alcune risorse di apprendimento (libri, articoli, post di blog, corsi di formazione online) per questo argomento? Ho letto anche questo post: Avvicinamento a internals Java / JVM Ma penso di aver bisogno di un pre-passo prima di saltare in OpenJDK, giusto?!

    
posta FidEliO 29.11.2012 - 16:58
fonte

4 risposte

5

Ciò che vuoi imparare riguarda lo studio di CS. Tecnicamente potresti imparare cosa sta facendo la JVM sotto le coperte, ma senza alcuni Compsci sarà tutto un guazzabuglio.

Il libro che avevo al college per questo argomento era Programming Language Pragmatics, IIRC. Aveva una buona panoramica di analisi, analisi semantica e simili, ma era ancora abbastanza gentile. Il libro del drago è anche un classico sull'argomento, ma sarà meno delicato nel suo approccio.

Mi sembra, però, che tu abbia raggiunto il livello del tuo mestiere che stai guardando nel regno dell'informatica, che è una pietra miliare. Vai avanti, salta e goditi il viaggio. :)

    
risposta data 29.11.2012 - 17:12
fonte
3

Alcune risposte suggeriscono un approccio dal basso verso l'alto (impara CS o qualche equivalente ravvicinato).

Potresti trascorrere un anno oltre a imparare CS e ancora non avere una risposta a "cosa succede sotto Java" ?

Anche se sono di sottofondo CS, ho avuto domande simili su .NET. Queste sono le cose che ho fatto per portare la mia conoscenza di .NET fino a zero.

  1. Implementa la mia classe base. Caso di utilizzo semplice, implementato un LinkedList per IEnumerable<T> , Iterable<T> .
  2. Confronta la mia implementazione con Microsoft / Oracle. Troverai un sacco di cose che prendono in considerazione che tu non hai.
  3. Leggi l'argomento. Ad es. se stai implementando il tuo Map / IDictionary<TKey, TValue> , qual è la dimensione del bucket migliore? Perché la dimensione della benna dovrebbe essere un numero primo? Qual è una buona implementazione della fuction HashCode() ? Quando ridimensiona il bucket?
  4. Prestazioni, confronta la tua implementazione e l'implementazione nativa. Probabilmente ti porterà lungo il percorso di controllo dei limiti , Closable / IDisposable , garbage collection & le sue generazioni.
  5. Documenti "accademici", una volta esaurito quanto sopra, puoi apprendere molti più dettagli dai documenti accademici. Per esempio. datato Paper on IO in Windows & .NET o Modelli di programmazione parallela .
  6. Ci sono alcune domande per interviste decenti che hai incontrato, prova a implementare una risposta e cerca quella più efficiente. Metteranno generalmente alla prova le tue conoscenze (profondità e ampiezza) come una buona misura di progresso.

L'implementazione di una raccolta è solo un esempio. Potrebbe facilmente essere un algoritmo ( BinarySearch ) o una libreria IO.

Per affrontare l'assenza di Informatica, ho bloccato "Computer Science Moudles" in google, un sacco di buoni colpi

In nessun ordine particolare, mirare a coprire le classi java che toccano questi argomenti,

  1. Strutture dati astratte
  2. Algoritmi
  3. Ingegneria del software (modelli di progettazione), interessante vedere come vengono utilizzati in un buon progetto open source per es.
  4. Interazione uomo-macchina
  5. Sistema operativo (si pensi al lato java del processore / memoria / IO, thread / GC ecc ...)
risposta data 29.11.2012 - 17:52
fonte
1

Se hai molto tempo, impara C poi leggi il libro di testo per una lezione di Architettura del Computer.

Se il livello di impegno è troppo grande, leggi un libro sull'ottimizzazione delle prestazioni Java. Un buon libro descriverà perché un dato parametro ha un determinato effetto, come gli oggetti sono disposti in memoria, come funziona un garbage collector generazionale, ecc.

    
risposta data 29.11.2012 - 17:03
fonte
1

Puoi anche unirti al programma OpenJDK di Adopt che è gestito da gruppi di utenti Java in tutto il mondo per aiutare le persone ad entrare nel mondo di OpenJDK. Vedi link per i dettagli.

    
risposta data 29.11.2012 - 18:05
fonte

Leggi altre domande sui tag