Pour devenir programmeur VB.net depuis une boutique Java

1. Pour devenir un programmeur VB.net depuis une boutique Java

Je suis essentiellement une boutique Java, mais j'ai décidé d'écrire un programme sur VB.net pour un certain projet. Je pensais que VB.net était Bimyo, mais je pensais que ce n'était pas très différent de Java, alors j'ai écrit un article sur la différence sous forme de mémorandum. C'est un soi-disant poème. Si vous avez l'opportunité de devenir programmeur VB.net dans une boutique Java, j'espère que cela vous aidera un peu.

2. Différence entre Java et VB.net

Je voudrais expliquer la différence avec VB.net du point de vue d'une boutique Java. Si vous voulez voir le code depuis le début, veuillez vous référer à [3. Sample](# 3-Sample).

2.1. VB.net a également une classe

VB.net est un langage orienté objet car il fait partie du .Net Framework. Les gens de VB6 semblent l'utiliser moins souvent, mais vous pouvez également définir Classe sur VB.net. Lors de son utilisation, new est utilisé pour créer un objet.

2.2. Les conventions de dénomination (méthodes, propriétés) sont LowerCamelCase pour Java et UpperCamelCase pour VB.net

Les deux sont basés sur CamelCase, mais VB.net est également basé sur ʻUpperCamelCasepour les méthodes et les propriétés. Dans une boutique Java, il est difficile de faire la différence avecClass` au premier coup d'œil, mais c'est ce que c'est.

2.3. Le package Java est Namespace

VB.net a également le concept d'emballage. Placez-le dans un bloc appelé «Namespace». Les packages Java sont liés à la structure des répertoires, mais «Namespace» de VB.net n'a rien à voir avec la structure des répertoires.

De plus, si vous utilisez les noms avec le nom Class et le nom Namespace, une erreur se produira dans la construction. Java a un package inférieur et le nom de Class est ʻUpperCamelCase`, donc il peut être jugé, mais je pense que VB.net ne peut pas être jugé par la même convention de dénomination. (peut être)

2.4. L'importation Java est des importations

«Import» de Java spécifie «Classe» (à l'exclusion des importations statiques), tandis que «Import» de VB.net spécifie «Espace de noms». Cela semble étrange car Java ne spécifie pas de package pour ʻimport. (. * Peut être vu visuellement) Même dans VB.net, lorsque vous définissez un alias, spécifiez la Classe` à la fin, mais dans ce cas, la description est différente, vous pouvez donc la voir visuellement.

2.5. Sub pour les méthodes dont la valeur de retour est void

Dans VB.net, la méthode de définition d'une méthode diffère selon la présence ou l'absence d'une valeur de retour. S'il n'y a pas de valeur de retour, c'est-à-dire s'il est «void» en Java, il est défini comme «Sub» (sous-section).

2.6. La méthode pour laquelle la valeur de retour existe est Function

S'il y a une valeur de retour, VB.net la définit comme une Fonction. Si vous souhaitez modifier la présence ou l'absence de la valeur de retour, VB.net est un peu en désordre.

2.7. Java statique est partagé

Lors de l'implémentation d'une petite fonction utilitaire en Java, je pense que c'est généralement une méthode «statique». Dans VB.net, ce n'est pas «statique» mais «partagé».

2.8. Les annotations Java sont des attributs VB.net

VB.net a également une fonction équivalente aux annotations Java. Voilà l'attribut. La fonction de base est de fournir des attributs pour la vérification d'entrée qui sont presque les mêmes que ceux de Java "Bean Validation". Pour plus de détails, reportez-vous à Microsoft Page.

2.9. VB.net a aussi des génériques (, paramètres de type)

Je pense que les génériques (, les paramètres de type) sont une fonction que vous voyez souvent dans Java récent. Bien sûr, VB.net a également cette fonctionnalité comme spécification de langage.

3. Échantillon

À titre d'exemple, je voudrais réaliser la même chose que la vérification d'entrée en utilisant la `` validation de bean '' de Java sur VB.net. Depuis que je l'ai réglé sur Sub sans valeur de retour, la Fonction mentionnée ci-dessus n'apparaît pas, mais j'ai essayé de tout emballer. Comme pour «Bean Validation», la vérification des entrées à l'aide d'attributs est simple, facile et pratique.

User.vb


Imports System.ComponentModel.DataAnnotations

Namespace Com.Example.Demo
    Public Class User
        <Display(Name:="Identifiant d'utilisateur")>  _
        <Required(ErrorMessage := "{0}Est une entrée obligatoire.")> _
        Public Property UserId As String
        
        <Display(Name:="Nom")> _
        <Required(ErrorMessage := "{0}Est une entrée obligatoire.")> _
        Public Property Name As String

        <Display(Name:="âge")> _
        <StringLength(3, MinimumLength :=1 ,ErrorMessage := "{0}Est{2}Plus d'un chiffre{1}Veuillez entrer dans les chiffres.")> _
        Public Property Age As String
    End Class
End Namespace

ValidateService.vb


Imports System.ComponentModel.DataAnnotations
Imports System.Collections.Generic

Namespace Com.Example.Demo
    Public Class ValidateService
        Public Shared Sub Validate(Of T)(target As T)
            Dim validationResults As New List(Of ValidationResult)
            Dim vc As New ValidationContext(target, Nothing, Nothing)
            Dim isValid As Boolean = Validator.TryValidateObject(target, vc, validationResults, true)
            If validationResults.Count > 0 Then
                Console.WriteLine("Vérification de la valeur d'entrée[NG]")
                For Each err As ValidationResult IN validationResults
                    Console.WriteLine("{0} : {1}", err.MemberNames(0), err.ErrorMessage)
                Next
            Else
                Console.WriteLine("Vérification de la valeur d'entrée[OK]")
            End If
        End Sub
    End Class
End Namespace

App.vb


Namespace Com.Example.Demo
    Public Module App
        Public Sub Main()
            Console.WriteLine("// ------- Validate 1 -------")
            'Des données d'entrée
            Dim input01 As new User()
            'Vérification de la valeur d'entrée
            ValidateService.Validate(Of User)(input01)

            Console.WriteLine("// ------- Validate 2 -------")
            'Des données d'entrée
            Dim input02 As new User()
            input02.UserId = "123456"
            input02.Name = "TARO TOYOSU"
            input02.Age = "1234"
            'Vérification de la valeur d'entrée
            ValidateService.Validate(Of User)(input02)

            Console.WriteLine("// ------- Validate 3 -------")
            'Des données d'entrée
            Dim input03 As new User()
            input03.UserId = "123456"
            input03.Name = "TARO TOYOSU"
            input03.Age = "123"
            'Vérification de la valeur d'entrée
            ValidateService.Validate(Of User)(input03)

        End Sub
    End Module
End Namespace

Java compile avec javac, tandis que VB.net compile avec vbc. Bien sûr, tout comme Java a des outils de construction comme Maven et Ant, VB.net a également un outil de construction appelé MsBuild.

build.bat


@echo off
set DOTNET_HOME=C:\Windows\Microsoft.NET\Framework64\v4.0.30319
set path=%path%;%DOTNET_HOME%
vbc /out:DemoApp.exe /r:System.ComponentModel.DataAnnotations.dll ^
/r:System.ServiceModel.Web.dll ^
App.vb User.vb ValidateService.vb

Modifiez la variable d'environnement de DOTNET_HOME en fonction de votre propre environnement. Si vous stockez tous les fichiers dans le même répertoire et exécutez build.bat, DemoApp.exe sera créé.

Résultat d'exécution


C:\demo>build.bat
Microsoft (R) Visual Basic Compiler version 14.7.2558
for Visual Basic 2012
Copyright (c) Microsoft Corporation.  All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to Visual Basic 2012, which is no longer the lates
t version. For compilers that support newer versions of the Visual Basic programming language, see http://go.microsoft.com/fwlink/?LinkID=533241


C:\demo>DemoApp.exe
// ------- Validate 1 -------
Vérification de la valeur d'entrée[NG]
UserId :L'ID utilisateur est requis.
Name :Le nom est obligatoire.
// ------- Validate 2 -------
Vérification de la valeur d'entrée[NG]
Age :Veuillez entrer l'âge entre 1 et 3 chiffres.
// ------- Validate 3 -------
Vérification de la valeur d'entrée[OK]

C:\demo>

4. Enfin

Cette fois, j'ai expliqué la différence (en partie) entre Java et VB.net du point de vue d'une boutique Java. Puisque VB.net fait partie du .Net Framework, un langage orienté objet, vous constaterez qu'il n'est pas très différent de Java, le même langage orienté objet. C # est encore plus proche de Java, mais (malheureusement, il existe encore de nombreux projets qui aiment VB **, donc j'espère que cela vous aidera lorsque vous décidez d'utiliser VB.net.

Recommended Posts

Pour devenir programmeur VB.net depuis une boutique Java
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Connectez-vous à Aurora (MySQL) depuis une application Java
De Java à Ruby !!
Comment passer d'Eclipse Java à un fichier SQL
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
Migration de Cobol vers JAVA
Nouvelles fonctionnalités de Java7 à Java8
Connectez-vous de Java à PostgreSQL
De Java inefficace à Java efficace
Comment stocker des chaînes de ArrayList à String en Java (personnel)
Comment créer un conteneur Java
Exécuter le fichier de commandes à partir de Java
Accéder à Teradata depuis une application Java
Java sera impliqué dès aujourd'hui
De Java à VB.NET - Écriture de notes de contraste
Java, interface pour partir du débutant
La route de JavaScript à Java
[Java] Conversion d'un tableau à une liste
Comment créer un tableau Java
Introduction à Scala du point de vue Java (basique)
Comment créer un résumé de calendrier Java
Convertir l'heure UTC Java en heure JST
[Introduction à Java] Comment écrire un programme Java
Un programme qui calcule la puissance de 2 à 100
Comment créer un robot Discord (Java)
Connectez-vous de Java à MySQL à l'aide d'Eclipse
Essayez d'exécuter Kubernetes Job à partir de Java
De l'installation d'Eclipse à l'exécution de Java (PHP)
Publier sur Slack à partir de Play Framework 2.8 (Java)
Java: Comment envoyer des valeurs du servlet au servlet
[Java] Flux du code source à l'exécution
Introduction à la surveillance à partir de Java Touching Prometheus
Précautions lors de la migration de VB6.0 vers JAVA
Mémo pour la migration de Java vers Kotlin
Conversion de type du type java Big Decimal au type String
Si une personne de Java apprend PHP
Il a fallu un mois entre l'application et la prise de l'Oracle Java SE 11 Silver
GetInstance () à partir d'une classe @Singleton dans Groovy à partir de Java
[Java] De deux listes à une liste de tableaux
Upsert du SDK Java vers Azure Cosmos DB
Transformer d'une classe normale en un style lambda
Deux façons de démarrer un thread en Java + @
Exécuter R à partir de Java Je veux exécuter rJava
Comment obtenir un heapdump à partir d'un conteneur Docker
Comment afficher une page Web en Java
Code pour échapper aux chaînes JSON en Java
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
Migrer de Java vers Kotlin côté serveur + Spring-boot
Essayez de créer un babillard en Java
J'ai essayé de frapper une méthode Java d'ABCL
Les débutants en programmation apprennent PHP à partir d'une perspective Java-variables-
Comment obtenir une classe depuis Element en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Comment convertir un contrat de solidité en une classe de contrat Java
Histoire d'essayer de faire fonctionner le fichier JAVA
Créer Scala Seq à partir de Java, faire de Scala Seq une liste Java