La vie Java à partir de zéro

Écrivons Java!

Dans cet article, en tant que deuxième jour du Calendrier de l'Avent Java 2018, pour les programmeurs qui n'ont jamais utilisé Java, je présenterai un environnement de développement Java que je devrais commencer à partir de cette époque, et je dirai également que "Java peut être utilisé". Je voudrais faire des réglages pour que le compilateur et les outils d'analyse statique me grondent jusqu'à ce que j'atteigne le niveau que je pense.

Cet article n'est pas recommandé pour ceux qui sont novices en programmation et novices en Java. C'est pour les personnes qui peuvent utiliser d'autres langages de programmation et comprendre Java d'une manière ou d'une autre.

Aussi, si vous êtes une personne expérimentée, je pense que tout le monde a le sentiment que mon environnement est meilleur, alors veuillez le présenter. De plus, bien qu'il s'agisse d'un article à la fin de 2018, la composition de base n'a pas beaucoup changé ces dernières années sous ma main. Je me demande si Facebook Infer ou Checker Framework deviendra monnaie courante ...

Installer eclipse

Quoi qu'il en soit, pour écrire Java, mettez eclipse, qui est aussi une version japonaise du paquet Pleiades All in One.

pleiades.png

Écrire Java avec un éditeur familier, tel que Vim ou Emacs, est ** déraisonnable **. eclim est un peu ~~ fou ~~ Il y a aussi une compétence avancée, mais comme le contenu est eclipse, c'est la prochaine étape après avoir été capable d'écrire avec eclipse. .. Les autres éditeurs sont également inutiles. Je vais vous dire la vérité, Java est un ** langage IDE **. Souhaitez-vous écrire un langage de programmation visuel dans un éditeur de texte? Vous allez le modifier avec un éditeur visuel. De même, le langage IDE est destiné à l'édition dans l'EDI.

Qu'en est-il des IDE autres qu'Eclipse? Si vous lisez un article comme celui-ci en japonais, Pléiades All in One est votre choix. Une erreur courante ici est de comprendre l'anglais, d'étudier l'anglais ou de penser que l'anglais est plus informatif et de se précipiter dans un domaine que vous ne connaissez pas correctement dans une langue dans laquelle vous n'êtes pas doué.

Java a un terme Java. (Bien que ce ne soit généralement pas très conscient, je pense que la plupart des langues ont des termes uniques ou des termes spécifiques au domaine vers lequel ils sont orientés.) Si vous ne savez pas si vous ne pouvez pas comprendre les fonctionnalités de l'EDI parce qu'il est anglais ou parce que c'est Java, vous ne pouvez pas le rechercher. De tels mots renoncent souvent même à être compris rapidement, et par conséquent, ce sont des fonctionnalités utiles qui n'ont jamais été utilisées. Si vous n'avez personne pour vous le dire exactement, l'interface doit être native, du moins jusqu'à ce que vous la maîtrisiez.

Bien sûr, IntelliJ (même CE) peut également être japonaisisé en utilisant Pléiades, mais la japonaisisation n'est pas très courante et s'adresse aux utilisateurs avancés. est. Il existe également NetBeans et VSCode, mais vous pouvez les oublier pour le moment. Ce n'est pas une question de bien ou de mal, ce n'est tout simplement pas adapté à cette fin.

Maintenant, pour Pléiades All in One, il existe plusieurs types. N'hésitez pas à télécharger à nouveau l'édition complète de ** pour Java **.

pleiades-java.png

Avez-vous choisi Ultimate parce que vous êtes également intéressé par d'autres langues? C'est un échec. eclise est un IDE profond. L'ultime est ce qui le rend encore plus profond. Je ne sais pas comment changer d'environnement linguistique, donc c'est Sekiyama.

Avez-vous choisi Platform parce que vous souhaitez la configurer vous-même? Herbe en cas d'échec. Je n'ai pas l'habitude d'éclipser, mais je ne peux pas le régler.

Si vous avez déjà installé eclipse pour un autre langage, n'hésitez pas à déposer la dernière version pour Java.

eclipse est un IDE riche en plugins, mais le fait qu'il soit riche en plugins et le fait que plusieurs plugins fonctionnent ensemble et fonctionnent est une histoire complètement différente. La plupart des causes d'échec dans eclipse sont que vous insérez un plug-in pour quoi que ce soit et que les plug-ins sont incohérents, ou que certains plug-in donnent une erreur fatale et eclipse ne démarre pas. est.

Vous devez utiliser un environnement stable validé jusqu'à ce que vous compreniez cela.

Configurer l'éclipse

La configuration initiale est effectuée après l'installation.

Vérifiez avant de démarrer

~~ Pas de droits de l'homme ~~ Il est malheureux de lancer Eclipse sur une machine à faible mémoire, mais c'est une histoire rare et courante. Je voudrais exclure le réglage individuel etc. de cet article, mais si vous êtes préoccupé par la version 32 bits ou la mémoire, c'est une bonne idée d'ajouter les deux lignes suivantes à la fin de ʻeclipse.ini`.

eclipse.ini(Extrait)


-Xms1G
-Xmx1G

Définir le compilateur

La grande chose (et rarement le piège) de l'environnement Java d'Eclipse est qu'il est livré avec un compilateur Java pour eclipse appelé ** Eclipse Compiler for Java (ecj) **. IntelliJ, qui n'utilise que JDK, peut faire quelque chose de similaire, donc ce n'est pas parce qu'il y a ecj maintenant, mais de toute façon, ecj peut définir son propre avertissement et réaliser une fonction d'analyse statique par lui-même. Faire. Cependant, il est doux par défaut, alors changez-le en réglage de pleine puissance. Bien que je fasse de mon mieux, soyons prévenus.

Ouvrez les paramètres. 設定メニュー

コンパイラーのエラー/警告

Regardons les paramètres individuellement pour chaque élément.

Style de code

codestyle.png

Bien que cela s'appelle un style, c'est généralement une règle générale, je vais donc en faire un ** avertissement . " Chaîne non externalisée " est une option qui n'est pas pertinente pour beaucoup et qui peut être ignorée. Si le style est divisé, serait-ce " accès aux membres inaccessibles du type englobant " ou " affectation de paramètres **"? Le premier est lorsque vous créez une classe en classe, vous n'avez donc probablement pas à vous en soucier pendant un certain temps. Cette dernière est une option qui ne permet pas d'affecter des arguments.

Problèmes de programmation potentiels

潜在的なプログラミングの問題

"* Conversion de boxe et de déballage " " enum incomplet'switch'case " " 'default'case missing'switch' " " classe sérialisable sans serialVersionUID *" est au mieux * * Information ** c'est bien, mais tout le reste est utile, alors faites-le ** Attention **.

Observation des noms et conflit

shadow.png

Ceci afin d'éviter les erreurs car il est facile de faire des erreurs en raison de la couverture de nom variable. En fait, il est peu probable que l'assistance de référence fasse des erreurs sur l'EDI, mais faisons-le ** attention **.

Analyse nulle

Null分析

"** Activer l'analyse nulle basée sur les annotations **" est difficile à utiliser, c'est donc une bonne idée de le désactiver. D'autres sont bien sûr les meilleurs.

Définir le formateur

Je pense que vous aimez les paramètres du formateur eux-mêmes, mais les paramètres par défaut ne font rien pour les commentaires de style Javadoc, et les commentaires sont généralement sales, alors définissons cela seul.

formatter.png

javadoc-format.png

"** Activer le format de commentaire Javadoc " " Activer le format de commentaire de bloc " " Activer le format de commentaire d'en-tête **" est important est.

Définir l'action de sauvegarde

Personnellement, je pense que la meilleure caractéristique d'Eclipse est cette action de sauvegarde. Lorsque vous enregistrez le fichier, non seulement il le formate, mais nettoie également le code. Si votre projet n'a pas de règles strictes, vous devez être prudent car lorsque vous modifiez le code source écrit par une autre personne, il sera automatiquement remplacé par la partie non liée, mais l'activez toujours pour votre propre écriture. Devrait être laissé.

保存アクション

Vous devez utiliser toutes les fonctions. Définissons également des actions supplémentaires.

Il peut y avoir des différences dans les préférences, les normes de codage et les styles de développement ici, mais je vais expliquer mes paramètres pour le moment. Si vous rendez l'action de sauvegarde trop stricte, le code que vous créez sera nettoyé, alors réglez-le sur une bonne impression.

Style de code

コードスタイル

Organisation du code

コード編成

Activons le formateur pour le moment. Le tri des membres peut être plus facile à voir dans l'ordre ABC, mais c'est une bonne idée d'éviter de les trier lors de l'édition, car cela peut être assez déroutant.

Accès membre

member.png

Code manquant

欠落コード Je pense que c'est le plus utile dans n'importe quelle scène, mais il est activé par défaut.

Code inutile

不要なコード

Configurer le nettoyage

Le nettoyage revient à supprimer une action de sauvegarde distincte. Vous pouvez faire presque la même chose que l'action de sauvegarde, donc activez les fonctionnalités avec lesquelles vous ne voulez normalement pas travailler, comme "supprimer les variables locales inutilisées", et nettoyez lorsque l'implémentation est terminée. Vous pouvez l'utiliser correctement en le regardant.

cleanup.png

Essayer de faire

Maintenant que les réglages sont terminés, commençons à faire.

Utiliser gradle

Les principaux langages d'aujourd'hui ont des référentiels de logiciels pour les bibliothèques et les outils qui peuvent être installés en une seule fois avec des dépendances avec des outils de gestion de paquets tels que npm et pip. Bien sûr, c'est aussi en Java. En Java, maven est l'équivalent. De même, comme une promesse d'anciens projets Java, il est préférable d'utiliser des fichiers de configuration groovy de nos jours car le fichier de configuration est XML. gradle est un outil de construction qui peut résoudre les dépendances à l'aide du référentiel maven.

Pleiades All in One inclut déjà le plugle gradle ** buildship **, vous pouvez donc commencer à l'utiliser tout de suite. Si vous envisagez de le créer en Java à partir de maintenant, vous devriez quand même le faire en tant que projet gradle. Bien que ce soit un outil de construction, il ne doit pas nécessairement pouvoir être construit avec gradle, et il est extrêmement utile simplement parce qu'il fonctionne comme un installateur de bibliothèque.

新しいgradleプロジェクト

Une fois créé, ouvrez le build.gradle du projet. La plus grande différence entre les référentiels maven et les référentiels npm et les référentiels pip est qu'il existe plusieurs référentiels bien connus, et il est courant d'avoir vos propres référentiels ou de configurer des référentiels projet par projet. Il existe deux référentiels publics très connus, maven central et jcenter. C'est un problème, c'est donc une bonne idée de définir les deux. Certaines bibliothèques sont généralement de chaque côté.

build.gradle


apply plugin: 'java-library'

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    //Les bibliothèques dépendantes sont spécifiées comme suit:
    //La valeur générée par buildship par défaut, mais n'est qu'un exemple.
    api 'org.apache.commons:commons-math3:3.6.1'
    implementation 'com.google.guava:guava:23.0'
    testImplementation 'junit:junit:4.12'
}

artefact maven

Le nom de la bibliothèque (appelée ** Artifact **) dans le référentiel maven se compose de l'ID de groupe et de l'ID d'artefact. Par exemple, une bibliothèque appelée goyave qui est couramment utilisée en Java devient l'ID d'artefact guava de l'ID de groupe com.google.guava. En gros, vous pouvez le considérer comme un nom de bibliothèque généralement plus long que dans d'autres langues.

Utiliser la complétion

Dans les IDE comme eclipse, la complétion est de la plus haute importance. La fonction de complétion étend non seulement le nom de la variable, mais vous permet également de spécifier le type et d'écrire une instruction d'importation, ou de générer une méthode principale. (L'importation n'est généralement pas manuscrite)

Date.png

génération principale main

utiliser lombok

Ce qui a le plus changé le code source Java entre la sortie de Java 6 il y a 10 ans et maintenant, c'est lombok plutôt que la mise à niveau des spécifications du langage. C'est une grande chose qui est devenue courante. Autrefois, Getter / Setter de type Java et toString () / hashCode () / ʻequals () `étaient générés par eclipse et des outils. Maintenant, si vous écrivez une annotation et incorporez lombok dans le compilateur au moment de la compilation, lombok la générera secrètement au moment de la compilation. Vous n'avez pas à gérer le code généré par les humains, vous pouvez donc garder votre code source propre. Comme il est intégré à Pléiades All in One depuis le début, vous pouvez l'utiliser immédiatement en incorporant la bibliothèque dans la dépendance afin qu'elle puisse être utilisée dans le projet.

build.gradle


apply plugin: 'java-library'

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.+'
}

Quand il n'y a pas de lombok

Example.java


public class Example {
  private String familyName;
  private String lastName;

  public String getFamilyName() {
    return familyName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setFamilyName(String familyName) {
    this.familyName = familyName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public boolean equals(Object o) {
    ...
  }

  public int hashCode() {
    ...
  }

  public String toString() {
    ...
  }
}

Quand il y a lombok

Example.java


@Data
public class Example {
  private String familyName;
  private String lastName;
}

Ce sera le même code.

Cela ressemble à de la magie noire, mais c'est une extension légitime de la spécification du compilateur Java, c'est juste un générateur de code, donc il n'y a pas de pénalité à l'exécution. (Dans la plupart des cas, lombok n'est pas nécessaire à l'exécution)

Voir Fonctionnalités Lombok pour plus d'informations. Il est facile de voir ce qui se passe en comparant le code avant et après la génération.

Utilisez SpotBugs

SpotBugs, anciennement FindBugs, est l'outil d'analyse statique standard de Java. (Pour être exact, il était fourchu parce que FindBugs l'a mangé) SpotBugs peut détecter les vérifications nulles, les fuites de ressources, les erreurs de vérification des erreurs d'API, etc. SpotBugs / FindBugs sont en mesure d'être utilisés en standard parmi de nombreux outils d'analyse statique Java car ils ne détectent presque que la théorie générale en Java, et ils sont dans la position d'eslint de JavaScript et PEP8 (checker) de Python. ..

Ceci est également inclus dans Pléiades All in One, vous pouvez donc l'utiliser au moment où vous écrivez le programme dans une certaine mesure.

UseSpotBugs.png

Utilisez JSR305

Il n'y a (pas) Java avec vous, Java et null, mais quelque chose qui peut être nul le sera un jour. ECJ et SpotBugs vous permettent de faire de simples vérifications nulles, mais les deux sont basés sur une analyse simple et ne capturent pas l'intention ou le code complexe du programme (il devient de plus en plus sophistiqué). En utilisant une bibliothèque appelée JSR305 conforme à la spécification qui n'a pas réussi à devenir le standard Java, il est possible d'indiquer avec des annotations si une variable peut devenir nulle ou non. Bien sûr, il s'agit d'une annotation, donc cela ne provoquera pas d'erreur de compilation. (Ecj peut faire des erreurs, mais je ne le recommande pas.) Cependant, SpotBugs prend en charge JSR305, vous pouvez donc mélanger l'intention avec la vérification nulle. De plus, @ CheckReturnValue peut être forcé d'utiliser la valeur de retour, @ Immutable pour indiquer qu'elle est immuable, @ NotThreadSafe pour indiquer que la ressource est fermée et @ WillClose pour indiquer que la ressource sera fermée. En plus du contrôle nul, des annotations utiles sont fournies.

build.gradle


apply plugin: 'java-library'

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    compile 'com.google.code.findbugs:jsr305:3.0.+'
    //Vous aurez peut-être également besoin de l'annotation spotbus lorsque vous vous y habituerez
    // compile 'com.github.spotbugs:spotbugs-annotations:3.1.+'
    compileOnly 'org.projectlombok:lombok:1.18.+'
}

Quand il y a JSR305


//Il est inutile d'appeler une méthode qui n'utilise pas de valeur de retour
@CheckReturnValue
public String getLastName() { ... }
//Il peut être nul, vous devez donc vérifier la valeur de retour
@CheckForNull
public String getFamilyName() { ... }
...

public void test() {
  getLastName(); //Spot Bugs se fâche parce que je n'utilise pas la valeur de retour
  String f = getFamilyName();
  String t = f.substr(0); //Spot Bugs se fâche parce que je n'ai pas vérifié null
}

Définir plus fort

Au fur et à mesure que vous vous y habituez (ou que le code est petit), SpotBugs ne dit pas grand-chose. Dans ce cas, réglez-le de manière à ce que même les problèmes mineurs puissent être signalés dans toutes les catégories.

SpotBugs

Soit dit en passant, "** Classement minimum à signaler **" est le paramètre à l'extrémité droite de la barre, où 20 est le plus indiqué. Veuillez noter que ce n'est pas le contraire.

De plus, SpotBugs peut augmenter la fonction de détection avec un plug-in (par exemple, fb-contrib), vous pouvez donc l'envisager.

Autres sujets

Vous devriez maintenant être en mesure de configurer votre environnement et de démarrer le développement. Je ne couvrirai pas l'implémentation spécifique en utilisant le framework dans cet article, mais je présenterai brièvement ce que vous devez savoir.

Javadoc Je pense que j'écris xxxDoc dans n'importe quelle langue ces jours-ci, mais n'oubliez pas Javadoc. Dans eclipse, si vous tapez / ** devant la méthode et appuyez sur ʻenter`, cela générera un modèle qui a l'air plutôt bien. Si vous laissez le reste à l'achèvement du code, vous devriez être en mesure d'écrire le Javadoc minimum tel quel.

public class Library {
	/** //← Généré en entrant uniquement ici
	 * 
	 * @param t
	 * @return
	 */
    public boolean someLibraryMethod(int t) {
        return true;
    }
}

Complétons le code pour voir de quel type de balises il existe. javadoc-comp.png

Convention de codage

À l'exception de la gestion des tabulations / retraits, le format standard en Java est Google Java Style Guide (head family) | [(traduction japonaise non officielle)]( Je pense que c'est une bonne idée de lire exactement https://kazurof.github.io/GoogleJavaStyle-ja/).

Réflexion et annotation

Je pense que c'est plus de la magie noire que du lombok, mais la réflexion est la technologie de base utilisée dans les frameworks et les bibliothèques ici et là. La plupart des langages modernes peuvent le faire, donc cela devrait être facilement accepté, mais en Java, il existe des situations gênantes où le niveau d'implémentation de la réflexion diffère selon la bibliothèque.

Les annotations sont de plus en plus utilisées pour soutenir la réflexion. Alors ne vous laissez pas berner par le fait que l'annotation elle-même ressemble à un code complexe et peut être alarmante, mais l'annotation elle-même n'est qu'une étiquette.

Example.java


import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;

@JsonAutoDetect(fieldVisibility = Visibility.ANY)
public class Example {
  private String familyName;
  private String lastName;

  public static void main(final String[] args) throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    Example e = new Example();
    e.familyName = "Nom de famille";
    e.lastName = "Nom";
    System.out.println(mapper.writeValueAsString(values));
    // {"familyName":"Nom de famille","lastName":"Nom"}
  }
}

Utilisez Jackson

Jackson est une bibliothèque standard assez de facto pour travailler avec JSON en Java et est un excellent moyen de comprendre les réflexions.

Essayez de l'utiliser avec des annotations jackson. https://github.com/FasterXML/jackson-annotations

Java moderne

Écrire Java dans un bloc-notes à l'université et les traumatismes est une histoire de Java, mais c'est aussi une promesse que le Java appris qu'il y aura lieu à l'ère de Java 2.

Même si vous ne savez pas grand-chose sur Java, si vous faites un peu de recherche, vous savez peut-être qu'il y a eu des changements relativement importants dans Java 8. Le Java 8 est sorti en mars 2014, il y a plus de quatre ans. Bien sûr, ce n'est que quatre ans après l'histoire de Java, qui a plus de 22 ans, mais si vous commencez maintenant, vous devriez au moins commencer ici. Effective Java est désormais compatible Java 9.

En raison de l'histoire de Java, malheureusement, les applets Java et les personnes et informations survivantes (et n'ayant pas pu être mises à jour) en i-mode se trouvent souvent dans des endroits comme les cours de programmation en ligne et les écoles. Cela peut être bien en termes d'apprentissage de la programmation, mais cela est nuisible en termes d'apprentissage de Java.

Ancien code

Si vous voyez du code comme celui-ci, fermez-le.

La personne qui écrit ce type de code est Java SE 1.5 ou une version antérieure, donc ce n'est plus une personne ancienne. Le paysage est assez différent entre Java ces jours-ci et Java aujourd'hui. Au contraire, vous devriez oublier les connaissances Java pour le moment.

Soyez un peu prudent avec un code comme celui-ci:

Un tel code pourrait être dans l'ère Java 6/7. Cela ne devrait pas être totalement inutile, mais vous ne pouvez pas vous attendre à grand-chose pour profiter de la formule lambda.

JVM La difficulté de démarrer avec Java par des personnes non vivantes dans l'écosystème JVM, ou la hauteur du seuil Java, est un problème dû au manque de connaissance de JVM plutôt que de Java et des machines virtuelles de processus modernes plutôt que de JVM. Je pense que c'est ce que cela signifie. Lorsqu'on parle de JVM, on dit souvent qu'il est naturel de connaître le GC générationnel. En fonction de la langue que vous avez utilisée jusqu'à présent, qu'est-ce que GC en premier lieu?

La plupart des gens veulent juste utiliser Java et ne pas parler de JVM séparément, mais JVM doit décider de la quantité de mémoire disponible au démarrage, et en fonction de cela, arrêter le monde, un phénomène qui n'a pas besoin d'être crié séparément. Se produit, il y a donc souvent des situations que vous devez connaître.

Pour le moment, il serait préférable de suivre les options de fonction disponibles sur la ligne de commande.

shell


java -XX:+PrintFlagsFinal -version

Effective Java C'est un livre qu'il faut lire. Lisons-le quand vous pouvez écrire Java dans une certaine mesure. La troisième édition de la version japonaise a été publiée en octobre.

https://www.maruzen-publishing.co.jp/item/b303054.html

fin

fin

Recommended Posts

La vie Java à partir de zéro
Java à partir du débutant, remplacer
Java, instance à partir du débutant
Java à partir de débutant, héritage
Java, classe abstraite pour commencer par débutant
Deep Learning Java from scratch 6.4 Régularisation
Java, constructeur de surcharge à partir du débutant
Étudiez le Deep Learning à partir de zéro en Java.
Java pour les débutants, les variables et les types
Java à partir du débutant, imbriqué / break / continue
Java, instruction if / instruction switch à partir du débutant
Java à partir du débutant, opérateur logique / opérateur conditionnel
Introduction à Java à partir de 0 Partie 1
Deep Learning Java à partir de zéro Chapitre 1 Introduction
Deep Learning Java from scratch 6.1 Mise à jour des paramètres
Deep Learning Java à partir de zéro Chapitre 2 Perceptron
Deep Learning Java from scratch 6.3 Normalisation par lots
Java, pour instruction / while à partir du débutant
Scala à partir de zéro (environnement de construction Mac)
Deep Learning from scratch Java Chapter 4 Apprentissage des réseaux de neurones
Java à partir du débutant, déclaration de classe / génération d'objet
[Deep Learning from scratch] dans Java 3. Réseau neuronal
Pour les ingénieurs Java qui démarrent Kotlin à partir de maintenant
Deep Learning Java à partir de zéro Chapitre 3 Réseau neuronal
Appeler Java depuis JRuby
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Évaluer la source Java à partir de Java
Picture-in-picture à partir d'iOS14
De Java à Ruby !!
Créer un environnement VS Code + WSL + Java + Gradle à partir de zéro
[Note] Créez un environnement Java à partir de zéro avec docker
Deep Learning Java from scratch 6.2 Valeur initiale du poids
[Java] Plates-formes parmi lesquelles choisir pour le développement Java à partir de maintenant (2020)
Deep Learning Java from scratch Chapter 5 Méthode de propagation de retour d'erreur
Création d'index Elastic Search à partir de Java
Nouvelles fonctionnalités de Java7 à Java8
Connectez-vous de Java à PostgreSQL
Utilisation de Docker depuis Java Gradle
De Java inefficace à Java efficace
JavaScript vu de Java
Exécuter des instructions non-Java à partir de Java
Appeler la classe scellée de Kotlin depuis Java
Obtenir le pays à partir de l'adresse IP (Java)
Exécutez node.js depuis Android Java (traitement)
Exécuter le fichier de commandes à partir de Java
[Java] Supprimer les espaces dans les chaînes de caractères
Procédure de préparation pratique d'Akka à partir de Java
Accéder à Teradata depuis une application Java
Utiliser Chrome Headless de Selenium / Java
Java sera impliqué dès aujourd'hui
Travailler avec des feuilles de calcul Google à partir de Java
Java, interface pour partir du débutant
[Java] Spring DI ④ --Gestion du cycle de vie
[Java] Comment définir le proxy lors du démarrage de Java
La route de JavaScript à Java
Réintroduction de Java8, disponible depuis Android Studio 2.4
Appelez l'API Java de TensorFlow depuis Scala
[Java] Conversion d'un tableau à une liste
Spring Boot à partir de zéro Partie 2
Exemple de code utilisant Minio de Java