Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
JAVA/Java Start

1. 기초 이론, 출력, 주석

by Toughie 2023. 12. 29.


자바 표준 스펙과 구현

 

자바 표준 스펙은 자바는 이렇게 만들어야 한다는 설계도(문서) 이다.

자바 커뮤니티 프로세스(JCP)에서 관리되며 해당 스펙을 참고에서 다양한 회사에서 실제로 작동하는 자바를 만든다.

 

자바 표준 스펙에 맞게 실제 작동하는 자바 프로그램의 종류가 다양한 이유는 각각 목적이나 최적화가 다르기 때문이다.

ex. 아마존 코레트의 경우는 AWS에 최적화 되어 있다.

 

그럼 각각의 자바 프로그램들은 호환이 잘 될까..? 

자바의 구현은 전부 자바 표준 스펙에 맞게 개발되었기 때문에(근본은 같음) 웬만하면 대부분 문제 없이 동작한다고 한다. 

그래도 개발 목적이 뚜렷하다면 그것에 맞는 자바를 사용하는게 좋을듯!


컴파일과 실행

자바는 기본적으로는 컴파일 언어이다.

 

1. 소스코드를 작성한다(.java) 

2. javac 컴파일러를 사용해서 소스 코드를 컴파일 한다. -> .class 파일 생성

3. 자바 소스 코드를 바이트코드로 변환해서 자바 가상머신(JVM)에서 더 빠르게 실행될 수 있도록 최적화 하고 오류도 검출한다.

(컴파일 에러가 나겠군)

4. JVM이 실행되면서 자바가 제공하는 java 프로그램이 작동한다.


IDE(통합개발환경)와 자바

터미널 등에서 OS에 직접 자바를 설치하는 대신 인텔리제이를 설치하니 해결되었다.

나중에 직접 설치하는 방법은 연습해 볼 예정

인텔리제이 내부에 자바를 설치하고 관리할 수 있는 기능이 있기 때문이다.

 

소스코드를 인텔리제이에서 실행하고 폴더를 확인해보면 out폴더에 .class 파일들이 생성된다. 

컴파일을 자동으로 해줬다는 의미.

 

또한 out 폴더를 확인해 보면 디컴파일된 형태로 표시가 되는데(주석은 사라져서 보인다 당연히)

실제로 확인해 보면 바이트코드로 변환되어 있다.

 

인텔리제이가 컴파일과 실행을 알아서 다 해주니 편하다.

XCode도 Swift 소스코드 컴파일과 실행을 다 해줬기 때문에 그냥 그렇구나.. 싶다 ㅋㅋ 


자바와 운영체제 독립성

일반적인 프로그램은 운영체제를 가린다.

윈도우 프로그램은 윈도우OS가 사용하는 명령어들로 구성되어 있기 때문에, exe파일을 맥북에서 실행할 수 없는 것처럼!

근데 자바는 자바가 설치되어 있다면 모든 OS에서 실행할 수 있다. 오?

자바 개발자는 자바에만 맞춰 개발하면 OS 호환성은 자바가 해결한다! 

.class로 컴파일된 자바 파일은 모든 자바 환경에서 실행 가능하다.

이것이 적용될 수 있는 상황은 아래와 같다.

개발할 때 자바와 서버에서 실행할 때 자바가 달라도 된다!

개발은 보통 맥이나 윈도우에서 이루어지고, 서버단에서는 리눅스를 많이 쓰고

서버가 AWS라면 아마존 코레토 자바를 리눅스 서버에 설치하면 되는 것이다.

이건 정말 자바의 큰 특징이자 장점이라고 느껴진다.

호환성의 아이콘 C타입


둘러보기

인텔리제이(IntelliJ)를 깔고 기본 세팅을 한 후에 콘솔창에 print를 해보았다.

이것 저것 시도해보면서 에러가 나는 경우들을 기록해본다.

 

- 우선 자바는 Swift의 structure의 개념 대신 기본적으로 모든 것이 클래스 기반이었다.

- 또한 클래스 앞에 접근수준인 public이 명시적으로 적혀있었다.(생략해도 에러는 안 나더라)

- 대소문자 구분한다.

- 파일명과 클래스이름은 같아야 한다.(아니면 에러남)

- 문자열은 쌍따옴표를 사용한다. 파이썬 처럼 홑따옴표 안에 문자열을 쓰면 캐릭터가 너무 많다고 한다. 홑따옴표는 캐릭터구나!

- 문장의 끝마다 세미콜론을 붙여줘야 한다. 아니면 에러난다 ;;;  ';' expected


출력

public class HelloJava {
    //메인 메서드, 프로그램의 시작점
    public static void main(String[] args) {
        //문자열은 쌍따옴표 사용
        System.out.println("hello java");
        //문장의 끝에는 ;을 통해 구분해주기 안 쓰면 에러남;
    }
}

 

public class HelloJava2 {
    public static void main(String[] args) {
        System.out.println("hi");
        System.out.println("I'm");
        System.out.println("Toughie");
    }
}

주석처리

 

public class CommentJava {
    // psvm 자동완성
    public static void main(String[] args) {
        // sout 자동완성
        System.out.println("Hello Java1");
//        System.out.println("Hello Java");
        /*
        System.out.println("Hello Java3");
        System.out.println("Hello Java4");
        */
    }
}

Swift와 완전 동일하게 주석 처리를 할 수 있다.

한 줄 주석은 /

여러 줄 주석은 /* */

라인 주석은 command /

 

또한 인텔리제이 자동 완성으로 

메인 메서드 코드는 psvm (public static void man)

프린트문은 sout으로 빠르게 작성할 수 있다. 

 

 

학습 출처

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음