현재 시스템 마이그레이션 업무를 하면서 고객사에서 챌린지 요청이 왔다고 한다. 그에 맞추려면 개발 역량이 필요하여 대부분의 서비스 회사에서 사용하는 Java/Spring을 스터디하게 되었다
강의를 들을까 했는데 단기간 내에 완수하는 것이 목표라서 위키독스에서 제공해 주는 “점프 투 자바“로 스터디를 시작하게 되었다!

아래는 책 기반으로 정리한 내용이다 ㅎㅎ

Java란?

썬 마이크로시스템즈에서 개발하여 1995년에 발표한 객체 지향적 프로그래밍이다.

우리 나라 기업에서 사용하는 프로그램의 80% 이상은 자바로 만들어 졌을 정도로 점유율이 높다.

하지만 지금은 오라클이 썬 마이크로시스템즈를 인수한 상태이다.

Java 특징

  1. A simple (간단하다)

    자바는 C++에 가깝지만 훨씬 간단하다. 자바는 고급 언어들에 들어 있는 여러 가지 요소들 중에서 반드시 필요하지 않다고 생각된 부분들은 모두 제거했다.

  2. Object-oriented (객체지향적이다)

    자바는 숫자(int, float, long 등)나 논리 값(true, false)을 제외한 거의 모든 것이 객체로 구성되어 있다. 실제로 자바는 Object 클래스에서 모든 클래스를 파생한다.

  3. Interpreted (인터프리터언어이다)

    자바는 정확하게 말하면 컴파일 언어인 동시에 인터프리터 언어이다. 자바는 먼저 텍스트 소스를 컴파일하여 2진 파일(클래스 파일)로 만든 다음 자바 런타임이 클래스 파일을 인터프리트하면서 실행한다. 먼저 시스템에 무관한 2진 파일을 만듦으로써 자바는 컴파일 언어에 가까운 속도와 시스템 독립성을 동시에 얻을 수 있었다.

    인터프리터 언어란, 명령어 한 줄씩 컴파일하여 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.

  4. Robust (강력하다)

    자바는 포인터 연산을 지원하지 않는다. 이는 잘못된 주소를 가르킬 가능성을 사전에 없앤 것이다. 자바는 모든 메모리 접근을 자바 시스템이 관리하고 제한하며 또한 예외 핸들링을 하여 시스템 붕괴의 우려가 없다. 예를 들어 자바는 리소스 관리(garbage collection)를 하는데 사용이 끝난 리소스를 시스템이 메모리에서 삭제하는 방식을 채택하고 있어 메모리 누출에 대한 고민을 프로그래머가 할 필요가 없다.

  5. Secured (안전하다)

    자바는 포인터 개념이 없고 유형 정의가 강고하여서 실행 전에 클래스 파일을 이용한 프로그램의 검사가 가능하다.

    자바는 프로그램 작성 시 자료형 타입에 굉장히 민감하여, 일단 컴파일만 되면 실행 시 오류가 발생하는 경우가 다른 언어에 비해 현저히 낮다.

    컴파일이 되었다면 코드에 결정적인 문제는 없는 것이다.

  6. Platform independent (플랫폼 독립적이다)

    자바의 실행 파일은 이진 코드(클래스) 파일이다. 따라서 자바 런타임이 설치된 시스템에서는 어디서나 자바 프로그램을 실행할 수 있다.

    자바는 프로그램이 JVM 위에서 실행되기 때문에 한번 작성한 프로그램은 os에 상관없이 어디서든 돌려볼 수 있다.

  7. Multithreaded (멀티쓰레딩을 지원한다)

    멀티 쓰레드를 지원할 경우 하나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있다. 특히 자바는 멀티 프로세서 하드웨어를 지원하도록 설계되었으므로 멀티 CPU 시스템에서 높은 효율을 낼 수 있다.

  8. Dynamic (동적이다)

    자바 인터페이스를 이용하면 하나의 모듈을 갱신할 때 다른 모듈을 모두 갱신할 필요가 없다. 이것은 인터페이스가 모든 인스턴스 변수와 도구의 실행문을 배제한 채 객체 간의 상호 작용을 정의하기 때문이다.

개발 환경 세팅

JDK (Java Development Kit)

  • JDK를 설치하면 설치 디렉토리 하위에 bin 디렉토리가 생기고 javac.exe와 java.exe가 저장되어 있다.
  • 만약 javac.exe가 없다면 JRE (Java Runtime Environment)로 설치한 것

자바소스와 컴파일

  • javac는 java compiler의 약어인데 자바 파일(.java)을 컴파일할 때 사용한다

Untitled

Compiler는 javac.exe에 해당되고 Java VM은 java.exe에 해당됨

  • 소스코드 (.java) → Compiler → 클래스 파일 (.class)

    컴파일된 클래스 파일은 JVM (Java Virtual Machine)이 인식할 수 있는 바이너리 파일이다.

  • JVM이 클래스 파일의 바이너리 코드를 해석하여 프로그램을 수행한다.

💡 Java가 C 또는 C++처럼 최종 결과물을 exe 파일로 만들지 않고 class 파일로 만드는 이유?

  • exe 파일은 용량이 큼
  • 동일하지 않은 운영체제에서도 실행 파일 사용 가능
  • JVM이라는 중간단계로 인해 수행 속도는 느리지만 실행 파일 재활용 가능

main 메소드

📌 클래스 파일을 실행하려면 main 메소드가 반드시 필요하다!

메소드(method)는 함수(function)와 동일한 개념이다. 다만 클래스 내의 함수는 보통 함수라고 말하지 않고 메소드라고 한다. 자바는 모든것이 클래스기반이므로 자바에서 사용되는 함수는 모두 메소드이다.

예시로 HelloWorld.java 파일을 가져 왔다!

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
  • public : 메소드의 접근제어자, public은 누구나 이 메소드에 접근할 수 있다는 의미
  • static : 메소드에 static 이 지정되어 있는 경우 이 메소드는 인스턴스 생성없이 실행 할 수 있음을 의미하는 데, static은 JVM 메모리에서도 나오는 용어니까 잘 알아 둬야 한다!
  • void : 메소드의 return 값이 없음(void: 사전적으로 “텅 빈” 이라는 뜻)을 의미한다.
  • String[] : 문자열을 나타내는 자바의 자료형([]가 있으므로 한 개가 아닌 여러 개의 값으로 이루어진 배열임을 의미한다.)
  • args : String[] 자료형에 대한 변수명
  • System.out.println : 표준 출력으로 데이터를 보내는 자바의 내장 메소드로 문자열을 화면에 출력

Leave a comment