Le but de la rédaction de cet article est de résumer certaines de mes expériences dans l'utilisation de Java au fil des ans, principalement liées à certains points de connaissance Java de base, donc j'espère également le partager avec des programmeurs Java qui viennent de démarrer et des novices potentiels qui ont l'intention d'entrer dans l'industrie du développement Java. J'espère vous donner une certaine expérience et vous laisser apprendre et utiliser mieux Java.
Le principal contenu de cette introduction est la partie liée à J2SE. De plus, nous présenterons un contenu lié à J2EE lié à chaque cadre de Java à l'avenir.
Après tant d'années de développement Java et combinée à une certaine expérience dans l'interview de développeurs Java, je pense que l'essentiel pour J2SE est de maîtriser le contenu suivant.
1. JVM lié (y compris les fonctionnalités de chaque version)
Pour ceux qui s'impliquent dans Java, les connaissances liées à la JVM n'ont pas nécessairement besoin d'être profondément comprises, vous pouvez donc avoir une simple compréhension des concepts. Cependant, pour un développeur senior avec plus de 3 ans d'expérience Java, il est presque inacceptable de ne pas connaître JVM.
En tant que base de l'opération Java, il est difficile de croire que les personnes qui ne connaissent pas du tout JVM peuvent comprendre pleinement la langue Java. Lorsque j'ai interviewé les développeurs avec plus de 3 ans d'expérience Java, JVM était presque une question incontournable. Bien sûr, JVM n'est pas la seule question d'entrevue qui détermine la qualité des capacités techniques, mais elle peut prouver le niveau des capacités de développement Java.
Dans la catégorie JVM, je pense que la connaissance qui doit être maîtrisée est:
Modèle et structure de mémoire JVM
Principe GC, réglage des performances
Tunage: vidage de filetage, analyser la structure de la mémoire
Structure bytecode binaire de classe, système de chargeur de classe, processus de chargement de classe, processus de création d'instructions
Processus d'exécution de la méthode
Les nouvelles fonctionnalités fournies par diverses mises à jour de version majeure de Java (nécessitent une compréhension simple)
2. Opération Java (Essentials de base)
Cela peut être très simple à voir. Qui ne peut pas exécuter un programme Java? Mais plusieurs fois, nous exécutons simplement des programmes Java via l'IDE. Comment l'IDE sous-jacente exécute-t-elle des programmes Java? Beaucoup de gens ne comprennent pas.
Ce point de connaissance est la chose la plus élémentaire que les développeurs Java doivent maîtriser. Lorsque vous les débutants, la première chose est de vous apprendre à exécuter des programmes Java sur la ligne de commande, mais beaucoup de gens l'oublient une fois qu'ils ont fini d'apprendre Java et d'utiliser l'IDE. Pourquoi soulignez-vous le savoir? Après avoir connu le moyen le plus pur de démarrer Java, vous pouvez analyser le nombre de répertoires commencés à ce moment-là, comment exécuter la dénomination, quels paramètres sont, s'ils manquent, etc. en cas de problème avec le démarrage. Cela vous aidera à résoudre des problèmes étranges liés à l'environnement possibles dans le développement réel.
Les connaissances dont vous avez besoin pour maîtriser ici est:
Javac compile le fichier java comme fichier de classe
Utilisation des commandes Java, comment démarrer la classe Java avec le package sur la ligne de commande
Les différents chemins impliqués dans le programme Java (ClassPath, Java.Library.Path, Home Directory où Java fonctionne, etc.)
3. Type de données
Il n'y a rien à dire sur cet article, ce n'est rien de plus que de maîtriser les types de base et les types d'objets en Java. Vous pouvez en savoir plus sur la façon dont JDK se convertit automatiquement, y compris l'emballage et le déballage, etc. Vous devez également prêter attention pour éviter le jugement de types égaux après l'emballage.
Principaux points de connaissance:
Types de base: int, long, flotteur, double, booléen ,. . .
Types d'objets correspondants: entier et autres types pour les types de base Conversion, emballage et déballage
Type d'objet: égaux, code de hasard
Caractéristiques du type de chaîne
4. Objets et instances, création d'objets
À cet égard, les développeurs doivent comprendre les concepts de classe et d'instance et les différences entre eux, qui est une base pour les caractéristiques orientées objet de Java. Les principaux points de connaissance sont:
Concepts de classe et d'instance
Processus de création d'instance:
1. Pas d'héritage: allouer l'espace mémoire, initialiser les variables et les constructeurs d'appels
2. Héritage: gère les actions statiques, alloue l'espace mémoire, définit les variables comme des valeurs initiales, gère l'initialisation à la définition et exécute le constructeur
Points à noter:
Les propriétés statiques, etc. sont initialisées à partir de la classe de base-> sous-classes
Caractéristiques liées à la méthode de construction sans paramètres par défaut
5. Contrôle d'accès
Il s'agit également d'une base pour les caractéristiques de l'encapsulation Java, et ce qui doit être maîtrisé est:
L'effet de modification du privé par défaut protégé par le public pour la classe, la méthode et le champ
6. Contrôle des processus
Les bases du contrôle du processus Java, bien que certaines syntaxes ne soient pas nécessairement couramment utilisées, elles doivent être comprises et utilisées aux bons endroits.
Ce qui doit être maîtrisé est:
Syntaxe pour le contrôle de processus tel que si, Switch, Loop, pour, tandis que
7. Le concept de programmation orientée objet
Il s'agit d'un concept de base de Java qui doit être maîtrisé par tout développeur Java. De nombreuses fonctionnalités ou points de connaissance de Java sont liés au concept de programmation orientée objet en Java. À ma compréhension, un bon développeur a non seulement besoin de comprendre ces fonctionnalités (points de connaissance) eux-mêmes, mais a également besoin de savoir comment ces objets se reflètent dans le concept de programmation orientée objet en Java, qui est plus propice aux développeurs pour maîtriser le langage de développement de Java et d'autres langages de programmation orientés objets. Je viens de répertorier brièvement ici, et les principaux points de connaissance incluent:
Trois principales caractéristiques orientées objet: encapsulation, héritage et polymorphisme; leurs concepts de définition respectifs, quelles sont leurs caractéristiques reflétées et leurs scénarios d'utilisation respectifs
Le concept de distribution statique et de distribution unique dynamique
Concept et utilisation de la surcharge
Héritage: implémentations d'interface multiples, héritage de la classe de base unique
Résumé, classe abstraite, interface
Polymorphisme: concept et utilisation de la couverture de la méthode
Rappel d'interface
8. Statique
Les attributs statiques sont également fréquemment utilisés dans le développement quotidien de Java. Vous devez comprendre l'utilisation liée aux mots clés statiques, et les utiliser également en conjonction avec d'autres mots clés, par exemple s'ils peuvent être utilisés en conjonction avec des mots clés tels que l'abstrait et final.
Les principales choses à maîtriser sont:
Définition des propriétés statiques, de l'utilisation et comment initialiser la classe lors du chargement
Définition et utilisation des méthodes statiques
Définition et utilisation des classes statiques
Définition et synchronisation d'initialisation des blocs de code statique
9. Points de connaissance de base
Ici, nous énumérons principalement certains points de connaissance Java dispersés qui ne sont pas systématiquement classés. Il est également beaucoup utilisé dans le développement quotidien. Il y a en fait beaucoup de contenu dans ce domaine. À l'heure actuelle, je ne les ai résumées que pour le moment ici:
Y compris:
égaux, HashCode, String / StringBuffer, final, enfin, finalisez
10. Framework de collection
C'est une partie qui a besoin de plus de maîtrise. On peut dire qu'il n'y a pas besoin de cadres de collecte sans les utiliser. C'est très important. Cependant, les points de connaissance ici ne sont pas difficiles, mais il est préférable de comprendre la méthode de mise en œuvre interne pour les collections, car cela vous aidera à choisir le cadre approprié dans différents scénarios pour résoudre le problème. Par exemple, si vous avez un ensemble de 10 000 éléments, vous devez souvent effectuer des opérations de jugement. Si vous connaissez les caractéristiques de la collection ou de la mise en œuvre interne, il est facile de faire le bon choix.
Le contenu suivant est inclus ici (la corrélation de la concurrence n'est pas incluse):
Le système de collecte System: Collection de base, carte
Contenu des implémentations spécifiques de l'ensemble, liste, ensemble, implémentations spécifiques à la carte, structures internes, méthodes spéciales, scénarios applicables, etc.
Utilisation des collections, etc.
11. Cadre d'exception
Les exceptions ne peuvent pas être prises au sérieux dans le développement de Java. Généralement, lorsqu'ils rencontrent des exceptions, ils seront lancés directement, ou simplement les attraper et les traiteront, et n'auront aucun impact majeur sur le fonctionnement global du programme. Cependant, dans la conception et le développement au niveau de l'entreprise, la conception et la manipulation des anomalies sont souvent liées à la robustesse globale du système. Pour les développeurs, la manipulation des exceptions dans un bon système doit être unifiée et éviter beaucoup de logique de traitement des exceptions dispersée partout; Pour les systèmes, les exceptions doivent être contrôlables et faciles à utiliser et à maintenir. Après que certaines exceptions apparaissent, il devrait y avoir un moyen de les traiter et de savoir comment opérer et entretenir. Par conséquent, bien que le cadre d'exception soit très simple, pour l'ensemble du développement d'applications au niveau de l'entreprise, la gestion des exceptions est très importante. Pour bien gérer les exceptions, vous devez comprendre le système d'exception en Java.
Il n'y a pas beaucoup de points de connaissance à maîtriser dans cette partie, principalement:
Système anormal:
Jetable
Exception
RuntimeException
Erreur
La différence entre RuntimeException et exception générale, méthodes de traitement spécifiques, etc.
12.java io
IO est non seulement simple en Java pour lire et écrire des fichiers, mais inclut également toutes les opérations d'entrée et de sortie telles que la lecture et l'écriture de réseaux de socket. Par exemple, la lecture du contenu du post dans les demandes HTTP standard est également un processus de sortie, etc ...
Pour IO, Java fournit non seulement des API de base des entrées et des sorties, mais fournit également des API de lecteur d'opération et d'écrivain simplifiées, qui sont également très importantes dans certains développements (projets impliquant un grand nombre d'opérations IO). Cela impliquera également (journaux, lecture et écriture de fichiers temporaires, etc.) dans le développement quotidien.
Les principaux points de connaissance ici sont:
Système IO de base: y compris InputStream, OutputStream, Reader / Writer, Fichier Reading, Divers Stream Reading, etc.
Le concept de NIO, méthodes d'utilisation spécifiques et scénarios d'utilisation
13. Concurrence multi-thread
Le multithreading est une partie relativement difficile de Java. Si le multi-threading est utilisé correctement, il peut efficacement améliorer le taux d'utilisation du CPU et améliorer l'efficacité globale du système, en particulier lorsqu'il existe un grand nombre de blocs d'opérations IO; Mais c'est aussi une épée à double tranchant. S'il n'est pas bien utilisé, le système ne sera pas seulement considérablement amélioré ou non amélioré, mais entraînera également des problèmes tels que le débogage entre plusieurs threads.
Il existe de nombreux contenus dans le multithreading. J'explique brièvement les points de connaissance qui doivent être maîtrisés dans Java dans l'utilisation initiale du multithreading. À l'avenir, si vous avez l'occasion d'introduire des fonctionnalités avancées en détail, vous aurez une introduction détaillée aux scénarios d'utilisation de certaines fonctionnalités avancées.
Implémentation et démarrage multithread
Différence entre appelable et exécutable
Syncrhoized, les caractéristiques et comparaisons respectives de Reentrantlock
Piscine
Obtenir des résultats d'exécution asynchrone
package simultané
verrouillage
..
14. Réseau
Java fournit également des API qui peuvent utiliser directement le protocole TCP et le protocole UDP. Lorsqu'il est nécessaire de mettre l'accent sur les performances du réseau, la communication peut être directement utilisée avec TCP / UDP. Vous pouvez voir l'utilisation de ces API connexes lors de la visualisation du code source de Tomcat et d'autres. Cependant, généralement, le TCP est rarement utilisé directement, et des cadres tels que Mina et Netty sont utilisés pour le traitement. Parce qu'il n'y a pas beaucoup de développement dans ce domaine, je ne les listerai pas en détail.
15. Traitement de l'heure et de la date
Pour presque toutes les applications, l'heure et le traitement de la date ne peuvent pas être évités, mais l'utilisation des API liées au temps avant JDK8 n'est pas amicale. À cette époque, des délais tels que Joda pourraient être choisis. Après la sortie de JDK8, la nouvelle API Time intègre essentiellement les avantages d'autres cadres et peut être utilisée directement.
Pour les développeurs Java, ils doivent être compétents dans l'utilisation d'API pour gérer le temps et les dates.
Les points de connaissance spécifiques ne seront plus répertoriés. J'écrirai un article spécial dans le futur pour résumer l'utilisation de l'API Time and Date dans JDK8.
16.xml Parsing / JSON Analyse
En fait, aucun de ces deux contenus n'est le contenu de J2SE, mais dans le développement quotidien, l'interaction avec d'autres programmes et fichiers de configuration est de plus en plus inséparable à partir de l'analyse de ces deux formats.
Cependant, pour un développeur, être en mesure de comprendre certains principes et méthodes de l'analyse spécifique XML / JSON vous aidera à mieux choisir la bonne façon pour vous dans chaque scénario spécifique pour rendre votre programme plus efficace et robuste.
XML: Vous devez comprendre les principes de base de l'analyse DOM et de l'analyse du sax et de leurs scénarios applicables respectifs
JSON: Vous devez comprendre l'utilisation de certains frameworks JSON couramment utilisés, tels que Jackson, Fastjson, Gson, etc.
17.Using maven
Maven n'est pas un contenu en Java, mais Maven est révolutionnaire et apporte une grande commodité au développement de Java. À partir de l'introduction et de la gestion des dépendances, les mises à jour et les versions des processus de développement, et même les mises à jour de la version, l'utilisation de Maven peuvent considérablement simplifier la complexité du processus de développement, ce qui permet de gagner beaucoup de temps. On peut dire que Maven est devenu la configuration standard pour les développeurs Java. Je considère donc également Maven comme un point de connaissance de base pour un développeur Java. J'ajouterai certaines de mes expériences et compétences dans l'utilisation de Maven à l'avenir, donc je ne vais pas entrer dans les détails ici.
18. génériques
Ceci est un nouveau concept introduit par JDK5. C'est en fait un sucre syntaxique. Ce sera un peu pratique lors de la rédaction du code Java. Généralement, pour le développement d'applications ou d'entreprises, il ne doit être utilisé que simplement, et il ne peut pas nécessairement être utilisé pour définir les génériques. Cependant, certains composants publics de base seront utilisés. Vous pouvez examiner de plus près cette partie en cas de besoin. Généralement, il peut être utilisé simplement.
19. Marquage
Il a également été introduit après JDK5. Spring est un excellent cadre, et il a commencé avec XML comme fichier de configuration standard. Cependant, après Spring3, en particulier après la montée du Spring-Boot, il est de plus en plus recommandé d'utiliser des annotations pour simplifier le fichier de configuration XML. Pour les développeurs, il peut gagner beaucoup de temps sur la configuration XML. Cependant, l'inconvénient est que l'annotation est dispersée dans différentes classes. Contrairement à XML, il peut avoir une compréhension globale et une gestion de toutes les configurations, il n'y a donc aucun moyen de remplacer complètement tous les XML. Pour les développeurs ordinaires, vous pouvez simplement utiliser des annotations. Certains développeurs avec des composants publics peuvent avoir besoin de comprendre la définition et la mise en œuvre des annotations, et vous pouvez examiner de plus près lorsque vous en avez besoin.
20.rmi
RemoteMethodInvocation est une interface d'appel distante unique à la langue Java, et il est relativement simple et pratique à utiliser. Cependant, lorsque les situations transversales, d'autres méthodes telles que WebService sont nécessaires pour la prendre en charge. De manière générale, les programmes n'ont pas besoin d'utiliser RMI, mais ils peuvent être utilisés dans des situations spécifiques. Je suis dans un projet, en utilisant RMI pour contrôler le démarrage et l'arrêt à distance du programme.
21.jni
L'interface native Java permet aux méthodes d'interface locales d'être appelées dans Java, qui est généralement utilisée pour appeler le code C / C ++. Il convient de noter que le problème du chemin de chargement du chargement du fichier SO / DLL en Java n'est pas compliqué pour appeler l'interface elle-même, mais il faut souvent beaucoup de temps pour charger la bibliothèque d'interface locale requise.
Ce qui précède n'est qu'une brève introduction à mes opinions et mes présentations sur ces points de connaissance et points techniques Java de base. Ces contenus sont tous dérivés d'un résumé de mon utilisation de Java au fil des ans. J'espère donner une certaine expérience à ceux qui viennent d'être exposés à Java ou qui ont l'intention de se développer à partir de Java. J'espère apprendre et utiliser Java plus efficacement et éviter de perdre un temps précieux. Il y a encore du contenu incomplet dans ce domaine, et ils seront ajoutés à travers de futurs articles. En raison de capacités personnelles limitées, bien sûr, il y aura des erreurs et des omissions. Bienvenue pour me corriger, discuter ensemble et améliorer cet article ensemble, en espérant que cela puisse vraiment aider les gens dans le besoin.
Le résumé ci-dessus des points de connaissance Java - Certaines suggestions pour les débutants de Java (doivent lire pour les débutants) sont tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.