Um ein VB.net-Programmierer aus einem Java-Shop zu werden

1. Um ein VB.net-Programmierer aus einem Java-Shop zu werden

Ich bin im Grunde ein Java-Shop, aber ich habe beschlossen, für ein bestimmtes Projekt ein Programm auf VB.net zu schreiben. Ich dachte, VB.net sei Bimyo, aber ich dachte, es sei nicht viel anders als Java, also schrieb ich einen Artikel über den Unterschied als Memorandum. Es ist ein sogenanntes Gedicht. Wenn Sie die Möglichkeit haben, ein VB.net-Programmierer in einem Java-Shop zu werden, hoffe ich, dass dies ein wenig hilft.

2. Unterschied zwischen Java und VB.net

Ich möchte den Unterschied zu VB.net aus der Sicht eines Java-Shops erklären. Wenn Sie den Code von Anfang an sehen möchten, lesen Sie bitte [3. Beispiel](# 3-Beispiel).

2.1. VB.net hat auch eine Klasse

VB.net ist eine objektorientierte Sprache, da sie Teil des .Net Frameworks ist. Leute von VB6 scheinen es seltener zu benutzen, aber Sie können auch "Klasse" auf VB.net definieren. Bei Verwendung wird "neu" verwendet, um ein Objekt zu erstellen.

2.2 Namenskonventionen (Methoden, Eigenschaften) sind LowerCamelCase für Java und UpperCamelCase für VB.net

Beide basieren auf "CamelCase", aber VB.net basiert auch auf "UpperCamelCase" für Methoden und Eigenschaften. In einem Java-Shop ist es auf den ersten Blick schwer, den Unterschied zu "Class" zu erkennen, aber genau das ist es.

2.3. Java-Paket ist Namespace

VB.net hat auch das Konzept der Verpackung. Schließen Sie es in einen Block namens "Namespace" ein. Java-Pakete sind an die Verzeichnisstruktur gebunden, aber der Namespace von VB.net hat nichts mit der Verzeichnisstruktur zu tun.

Wenn Sie die Namen mit dem Namen "Class" und dem Namen "Namespace" verwenden, tritt im Build ein Fehler auf. Java hat ein niedrigeres Paket und der Name der Klasse lautet UpperCamelCase, daher kann es beurteilt werden, aber ich denke, dass VB.net nicht nach derselben Namenskonvention beurteilt werden kann. (vielleicht)

2.4. Java-Import ist Import

Javas "Import" gibt "Klasse" an (ausgenommen statische Importe), während VB.nets "Importe" "Namespace" angibt. Es fühlt sich seltsam an, weil Java kein Paket für "Import" angibt. (. * Kann visuell gesehen werden) Selbst in VB.net geben Sie beim Festlegen eines Alias am Ende die Klasse an. In diesem Fall ist die Beschreibung jedoch anders, sodass Sie sie visuell sehen können.

2.5. Sub für Methoden mit dem Rückgabewert void

In VB.net unterscheidet sich die Methode zum Definieren einer Methode je nach Vorhandensein oder Fehlen eines Rückgabewerts. Wenn es keinen Rückgabewert gibt, dh wenn er in Java "void" ist, wird er als "Sub" (Unterabschnitt) definiert.

2.6 Die Methode, für die der Rückgabewert existiert, ist Function

Wenn es einen Rückgabewert gibt, definiert VB.net ihn als "Funktion". Wenn Sie das Vorhandensein oder Fehlen des Rückgabewerts ändern möchten, ist VB.net ein bisschen chaotisch.

2.7. Java static wird freigegeben

Bei der Implementierung einer kleinen Utility-Funktion in Java denke ich, dass es sich normalerweise um eine statische Methode handelt. In VB.net ist dies nicht "statisch", sondern "gemeinsam".

2.8. Java-Annotationen sind VB.net-Attribute

VB.net hat auch eine Funktion, die Java-Annotationen entspricht. Das ist das Attribut. Die Grundfunktion besteht darin, Attribute für die Eingabeprüfung bereitzustellen, die fast mit Javas "Bean Validation" identisch sind. Weitere Informationen finden Sie unter Microsoft-Seite.

2.9. VB.net hat auch Generika (, Typparameter)

Ich denke, dass Generika (, Typparameter) eine Funktion sind, die Sie in neuerem Java häufig sehen. Natürlich hat VB.net diese Funktion auch als Sprachspezifikation.

3. Probe

Als Beispiel möchte ich das Gleiche wie die Eingabeprüfung mit Javas "Bean Validation" auf VB.net realisieren. Da ich es auf "Sub" ohne Rückgabewert gesetzt habe, wird die oben erwähnte "Funktion" nicht angezeigt, aber ich habe versucht, alles andere zu packen. Wie bei der Bean-Validierung ist die Überprüfung der Eingabe mithilfe von Attributen einfach, leicht und bequem.

User.vb


Imports System.ComponentModel.DataAnnotations

Namespace Com.Example.Demo
    Public Class User
        <Display(Name:="Benutzeridentifikation")>  _
        <Required(ErrorMessage := "{0}Ist ein erforderlicher Eintrag.")> _
        Public Property UserId As String
        
        <Display(Name:="Name")> _
        <Required(ErrorMessage := "{0}Ist ein erforderlicher Eintrag.")> _
        Public Property Name As String

        <Display(Name:="Alter")> _
        <StringLength(3, MinimumLength :=1 ,ErrorMessage := "{0}Ist{2}Mehr als eine Ziffer{1}Bitte geben Sie innerhalb der Ziffern ein.")> _
        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("Eingabewertprüfung[NG]")
                For Each err As ValidationResult IN validationResults
                    Console.WriteLine("{0} : {1}", err.MemberNames(0), err.ErrorMessage)
                Next
            Else
                Console.WriteLine("Eingabewertprüfung[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 -------")
            'Eingabedaten
            Dim input01 As new User()
            'Eingabewertprüfung
            ValidateService.Validate(Of User)(input01)

            Console.WriteLine("// ------- Validate 2 -------")
            'Eingabedaten
            Dim input02 As new User()
            input02.UserId = "123456"
            input02.Name = "TARO TOYOSU"
            input02.Age = "1234"
            'Eingabewertprüfung
            ValidateService.Validate(Of User)(input02)

            Console.WriteLine("// ------- Validate 3 -------")
            'Eingabedaten
            Dim input03 As new User()
            input03.UserId = "123456"
            input03.Name = "TARO TOYOSU"
            input03.Age = "123"
            'Eingabewertprüfung
            ValidateService.Validate(Of User)(input03)

        End Sub
    End Module
End Namespace

Java kompiliert mit javac, während VB.net mit vbc kompiliert. Genau wie Java Build-Tools wie Maven und Ant hat, hat VB.net natürlich auch ein Build-Tool namens "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

Ändern Sie die Umgebungsvariable von "DOTNET_HOME" entsprechend Ihrer eigenen Umgebung. Wenn Sie alle Dateien im selben Verzeichnis speichern und "build.bat" ausführen, wird "DemoApp.exe" erstellt.

Ausführungsergebnis


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 -------
Eingabewertprüfung[NG]
UserId :Benutzer-ID ist erforderlich.
Name :Der Name ist erforderlich.
// ------- Validate 2 -------
Eingabewertprüfung[NG]
Age :Bitte geben Sie das Alter zwischen 1 und 3 Ziffern ein.
// ------- Validate 3 -------
Eingabewertprüfung[OK]

C:\demo>

4. Schließlich

Dieses Mal erklärte ich den Unterschied (Teil) zwischen Java und VB.net aus der Perspektive eines Java-Shops. Da VB.net Teil des .Net Frameworks ist, einer objektorientierten Sprache, werden Sie feststellen, dass es sich nicht wesentlich von Java unterscheidet, der gleichen objektorientierten Sprache. C # ist noch näher an Java, aber (leider gibt es immer noch viele Projekte, die VB ** lieben, also hoffe ich, dass es Ihnen hilft, wenn Sie sich für VB.net entscheiden.

Recommended Posts

Um ein VB.net-Programmierer aus einem Java-Shop zu werden
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
Von Java zu Ruby !!
So springen Sie von Eclipse Java zu einer SQL-Datei
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
Migration von Cobol nach JAVA
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Von ineffektivem Java zu effektivem Java
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
So erstellen Sie einen Java-Container
Führen Sie eine Batchdatei von Java aus
Greifen Sie über eine Java-Anwendung auf Teradata zu
Java soll ab heute dabei sein
Von Java zu VB.NET-Writing Kontrastmemo-
Java, Schnittstelle für Anfänger
Der Weg von JavaScript nach Java
[Java] Konvertierung von Array zu Liste
So erstellen Sie ein Java-Array
Einführung in Scala aus Java-Perspektive (grundlegend)
So erstellen Sie eine Java-Kalenderzusammenfassung
Konvertieren Sie von der Java-UTC-Zeit in die JST-Zeit
[Einführung in Java] So schreiben Sie ein Java-Programm
Ein Programm, das die Leistung von 2 bis 100 berechnet
Wie erstelle ich einen Discord Bot (Java)
Stellen Sie mit Eclipse eine Verbindung von Java zu MySQL her
Versuchen Sie, Kubernetes Job von Java aus auszuführen
Von der Installation von Eclipse bis zur Ausführung von Java (PHP)
Post to Slack von Play Framework 2.8 (Java)
Java: So senden Sie Werte von Servlet zu Servlet
[Java] Fluss vom Quellcode zur Ausführung
Einführung in die Überwachung von Java Touching Prometheus
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Memo für die Migration von Java nach Kotlin
Typkonvertierung vom Java Big Decimal-Typ zum String-Typ
Wenn eine Person aus Java PHP lernt
Von der Bewerbung bis zur Einführung von Oracle Java SE 11 Silver dauerte es einen Monat
GetInstance () aus einer @ Singleton-Klasse in Groovy aus Java
[Java] Von zwei Listen zu einer Array-Liste
Upsert von Java SDK zu Azure Cosmos DB
Verwandeln Sie sich von einer normalen Klasse in einen Lambda-Stil
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
R von Java ausführen Ich möchte rJava ausführen
So erhalten Sie einen Heapdump aus einem Docker-Container
So zeigen Sie eine Webseite in Java an
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Migrieren Sie von Java zu Server Side Kotlin + Spring-Boot
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Ich habe versucht, eine Java-Methode von ABCL zu verwenden
Programmieranfänger lernen PHP aus einer Java-Perspektive.
So erhalten Sie eine Klasse von Element in Java
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
So konvertieren Sie einen Soliditätsvertrag in eine Java-Vertragsklasse
Die Geschichte des Versuchs, JAVA File zu bedienen
Erstellen Sie Scala Seq aus Java, machen Sie Scala Seq zu einer Java-Liste