"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 전환 안내서 : Java에서 JavaScript까지

전환 안내서 : Java에서 JavaScript까지

2025-02-06에 게시되었습니다
검색:764

작년에 나는 휴식 후 Java에 중점을 둔 프로그래밍을 다시 방문했다. 저의 목표는 파이썬보다 더 어려운 언어였습니다. JDBC를 통한 운영 역학, 객체 지향 프로그래밍 (OOP), 메모리 관리 및 데이터베이스 연결성 :

최근에, 나는 JavaScript로 시작하여 웹 개발로 전환했습니다. 며칠 동안 JavaScript를 탐색 한 후 Java와 JavaScript의 주요 차이점과 원활한 전환이 가능한 방법에 대한 관찰과 통찰력을 공유하고 싶습니다.


핵심 차이

가장 눈에 띄는 차이는 데이터 유형 선언에 있습니다. Java의 정적 타이핑과 달리 JavaScript는 동적으로 입력됩니다. 두 가지 접근법 모두 장점과 단점이 있지만, JavaScript의 단일 스레드 자연은 Java의 멀티 스레드 기능과 대조됩니다.

java vs. javaScript : 간단한 비유

Java를 세심하고 세부적인 지향적 인 군인이라고 상상해보십시오. 작업과 근거를 모두 지정하는 지침은 정확해야합니다. 반대로 JavaScript는 편안한 친구와 비슷합니다. 과도한 세부 사항없이 작업을 효율적으로 완료합니다. 단순히 작업을 제공하고 실행을 처리합니다.

Transition Guide: From Java to JavaScript

데이터 유형 처리

Java는 변수를 정의 할 때 명백한 데이터 유형 선언 (예 : , int , float , float float boolean )를 의무화합니다. 그러나 JavaScript는 유연합니다. 변수는 let 또는 const (상수의 경우)를 사용하여 선언되며 런타임에 유형 결정이 발생합니다. var 는 비슷한 목적을 제공했지만 const

가 선호됩니다.

java 예 :

class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        int result = a   b;
        System.out.println(result);
    }
}

javaScript 예 :

let a = 5;
let b = 6;

let sum = a   b;

console.log("The sum is: "   sum);

java and javaScript의 발산

널리 사용되는 경우 JavaScript에서 OOP를 이해하는 것이 중요합니다. JavaScript의 동적 타이핑 외에도 프로토 타입을 통해 속성을 상속하는 프로토 타입 기반입니다. Post-ES6, JavaScript는 클래스와 함께 OOP를 완전히 지원하지만 기본적으로 프로토 타입에 의존합니다.

다음 코드 스 니펫은 클래스 및 메소드 생성의 구문 차이를 보여줍니다.

자바:
class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Hello, "   name);
    }

    public static void main(String[] args) {
        Person person = new Person("John");
        person.greet();
    }
}
클래스 사람 { 문자열 이름; 사람 (문자열 이름) { this.name = 이름; } void greet () { System.out.println ( "Hello,"Name); } public static void main (String [] args) { 사람 = 새로운 사람 ( "존"); person.greet (); } }

javaScript :
class Person {
    constructor(name) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}`);
    }
}

const person = new Person("John");
person.greet();
클래스 사람 { 생성자 (이름) { this.name = 이름; } 환영하다() { console.log (`hello, $ {this.name}`); } } const person = 새로운 사람 ( "John"); person.greet ();

javaScript의 객체 생성

Java에서 객체 생성에는 클래스 정의가 필요합니다. JavaScript는 유연성을 제공합니다. 객체는 명시적인 클래스 선언없이 직접 생성 할 수 있습니다.

Java는 모든 객체가 클래스의 인스턴스가되도록 요구합니다. JavaScript는 직접 객체 생성을 허용합니다 :

javaScript
class Person {
    constructor(name) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}`);
    }
}

const person = new Person("John");
person.greet();
const person = { 이름 : "존", 인사 : function () { console.log (`hello, $ {this.name}`); } }; person.greet ();

상속 메커니즘

상속 구문은 두 언어에서 유사성을 보여줍니다.

자바:
class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Hello, "   name);
    }

    public static void main(String[] args) {
        Person person = new Person("John");
        person.greet();
    }
}
클래스 동물 { void sound () { System.out.println ( "Some Sound"); } } 계급 개 확장 동물 { void sound () { System.out.println ( "껍질"); } } 공개 클래스 메인 { public static void main (String [] args) { 개 개 = 새로운 개 (); dog.sound (); } }

javaScript :
class Person {
    constructor(name) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}`);
    }
}

const person = new Person("John");
person.greet();
클래스 동물 { 소리() { Console.log ( "Some Sound"); } } 계급 개 확장 동물 { 소리() { Console.log ( "껍질"); } } const dog = new Dog (); dog.sound ();

캡슐화 고려 사항

JavaScript의 캡슐화는 Java보다 약합니다. 액세스 수정 자 ( private , protected , public 가 없습니다. 그러나 ES2022에 소개 된

#
class Person {
    #name;

    constructor(name) {
        this.#name = name;
    }

    greet() {
        console.log(`Hello, ${this.#name}`);
    }
}

const person = new Person("John");
person.greet();
console.log(person.#name);  // Error: Private field '#name' must be declared in an enclosing class
클래스 사람 { #이름; 생성자 (이름) { #이름 = 이름; } 환영하다() { console.log (`hello, $ {this.#name}`); } } const person = 새로운 사람 ( "John"); person.greet (); Console.log (Person.#name); // 오류 : 개인 필드 '#Name'은 클래스 클래스에서 선언해야합니다

다형성 측면

Java는 컴파일 타임 다형성 (메소드 과부하) 및 런타임 다형성 (메소드 재정의)을 지원합니다.

class Animal {
    sound() {
        console.log("Some sound");
    }
}

class Dog extends Animal {
    sound() {
        console.log("Bark");
    }
}

const dog = new Dog();
dog.sound();  // Bark
클래스 동물 { 소리() { Console.log ( "Some Sound"); } } 계급 개 확장 동물 { 소리() { Console.log ( "껍질"); } } const dog = new Dog (); dog.sound (); // 짖다

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3