Java의 특징
- 운영체제에 독립적이다.
자바 이전의 언어들은 C, C++ 등 특정 CPU나 특정 OS에 따라 다르게 작성해야하는 언어들이 대부분이었다. 자바는 이러한 문제를 해결하고자 JRE(Java Runtime Environment: JVM(자바 가상머신)+표준 클래스 라이브러리)가 설치되어있는 모든 운영체제에서 실행이 가능하도록 만들어졌다. - 객체 지향 언어(Object Oriented Programming, OOP)
자바는 객체 지향 프로그래밍 개념을 사용하는 언어이다. 따라서 모든 기능은 객체로 만들어 사용해야 한다. 객체는 프로그램이 동작하는 부품이라고 생각하면 되는데, 여러 부품(객체)들을 만들고 조립하여 하나의 프로그램을 실행하는 개념이다. 객체 지향적으로 설계된 프로그램은 유지보수가 쉽고 확장성이 높다. - 함수형 프로그래밍 지원
자바 8버전부터 함수형 프로그래밍을 지원하는 문법인 람다식과 스트림이 추가되었다. 이를 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하기 쉬워지고 코드가 간결해지는 장점이 있다. - 자동 메모리 관리(Garbage Collection)
자바는 96년에 발표된 언어이고 C++를 개선하는 것 또한 여러 목표 중의 하나였다. 그래서 자바는 자동으로 메모리를 관리해 주는 기능을 추가했다. C, C++의 경우 메모리의 생성과 소멸을 개발자가 직접 설계해야했지만 자바는 가비지 컬렉터를 실행시켜 자동으로 사용하지 않는 메모리릴 수거한다. 이를 통해 개발자는 메모리를 관리하는 수고를 덜고 핵심 코드에 집중할 수 있다.
JVM(Java Virtual Machine)
자바는 컴파일러(Compiler)를 통해 기계어(Machine Language)로 변환되는 언어이다. 컴파일이란 특정 프로그래밍 언어를 기계가 이해할 수 있는 언어로 옮기는 번역 과정으로, 여기에서는 자바 언어를 JVM(Java virtual Machine)이 이해할 수 있는 코드(바이트코드, Bytecode)로 변환하는 것을 의미한다. JVM은 바이트코드를 운영체제에 맞는 기계어로 변환해준다.
JVM은 자바 프록그램을 실행시키는 도구이다. 자바가 운영체제에 독립적인 것은 JVM이 있기 때문에 가능하다. JVM은 자바 코드로 작성한 프로그램을 해석해 실해애하는 별도의 프로그램이다.
프로그램이 제대로 실행되기 위해서는 컴퓨터의 다양한 자원(CPU, RAM,각종 입출력 장치 등)을 활용해야 한다. 이런 자원을 관리하는 것은 운영체제이므로, 프로그램은 운영체제가 정한 규칙을 따라야 합니다. 서로 다른 운영체제(Linux, Windows, MacOS 등)에서 프로그램을 실행하기 위해는 운영체제별 규칙을 따르는 별도의 절차가 필요하다. JVM은 이 문제를 해결할 수 있다. JVM의 경우 JDK(Java Development Kit)나 JRE(Java Runtime Environment)를 설치하면 자동으로 설치된다. 자바는 JVM을 거치기 때문에 C나 C++ 에 비해 속도는 느린 편이지만 JVM 내부의 최적화된 JIT 컴파일러를 통해 속도를 크게 개선해나가고 있다.
IntelliJ 프로젝트 생성하기
똥컴이라 많이 느리지만... 천천히 따라해보자ㅠㅠㅠ
먼저 New->project 를 클릭한다.
- New Project에서 Java언어를 선택
- Name에 프로젝트 이름 설정
- Location에 저장 위치 설정
- Build system을 IntelliJ로 설정
- JDK를 Azul zulu 11 버전으로 설정
JDK 는 oracle 등 다양한회사와 버전의 키트가 있음
public class Main {...}
클래스는 객체지향 프로그램에 있어 핵심되는 문법 개념으로 "접근 허용 범위가 public 인 Main 이라는 이름의 클래스를 정의한다" 라는 의미이다. 쉽게 말하면 Main이라는 이름의 클래스가 있고 그 안에서 코드를 작성할 수 있다 라는 뜻이다. 완벽하게 이해하긴 어렵지만 일단 이정도로 알고 넘어가자..!
Public static void main(String[] args) {...}
public static은 나중에 깊게 다룰 내용으로 우선 넘어가고 이후 코드를 봐보자. void main(String[] args) {...} 은 쉽게 표현하면 A main(B C) {D} 이다. 이는 메서드를 정의하는 문법이다. 메서드란 어떤 기능을 하는 코드를 묶음으로 묶은 것을 의미하며 어떠한 기능을 수행하기 위한 일련의 코드들의 집합체이다. 메서드 문법을 각 요소로 설명하자면,
- A: 반환타입
메서드가 반환할 반환 값의 종류 및 유형을 의미하며 메서드를 정의할 때 메서드 이름 앞에 반환 타입을 명시해야 한다. - B: 매개변수의 타입, C: 매개변수의 이름
매개변수는 메서드 외부에서 매서드 내부로 전달한 값을 할당받아 저장함으로써 메서드 내부에서 사용할 수 있게 해준다. 매개변수 타입은 어떤 유형의 값을 메서드가 입력 받을 것인지를 명시하는 것을 의ㅣ미하며, 매개변수의 이름은 입력받은 값에 어떤 이름을 붙여 사용할 것인지를 명시하는 것을 의미한다. - D: 메서드 바디
메서드 바디는 구체적으로 메서드가 어떤 기능을 수행할지에 대한 코드를 작성하는 부분이다. return 키워드를 사용해 어떤 값을 변환할 수 있다.
'공부 > 전자컴퓨터공학' 카테고리의 다른 글
Java 문자열(string) Java 기초 배우기 (1) | 2024.05.07 |
---|---|
Java 변수(variable)와 타입(Type) 자바 기초 배우기 (0) | 2024.05.07 |
JDK IntelliJ JetBrains Toolbox 설치하기 Java 기초 (0) | 2024.05.03 |
Git & GitHub 란? Git 설치 및 기초 습득하기 (3) | 2024.05.03 |
CLI(Command-Line Interface)란? CLI 기본 명령어 배우기 (0) | 2024.05.02 |