1. 자바(JAVA) 공부의 첫걸음
자바는 프로그래밍 언어입니다. 프로그래밍 언어는 사람과 컴퓨터 사이의 소통을 위해 만들어졌습니다. 개발자들은 프로그래밍 언어를 사용해 컴퓨터에게 명령을 내립니다. 다양한 프로그래밍 언어가 있지만 각 언어마다 다른 특징을 가지고 있기 때문에 개발 목적에 맞는 언어를 선택하는 것이 좋습니다. 자바는 다양한 분야에 사용되고 있습니다. 웹 서버 / 클라우드 / 안드로이드 앱 개발에 관심이 있다면 자바를 공부하는 것이 좋습니다.
TIOBE에 따르면 22년 12월 기준 자바는 프로그래밍 언어 중 4위에 해당하는 인기 순위를 차지하고 있습니다. 과거에 비해 인기가 떨어지긴 했지만 자바의 견고한 안정성 때문에 상위권에서 쉽게 벗어나지 않을 것입니다. 특히 한국에서의 사용 점유율이 높기 때문에 국내에서 일하고자 하는 개발자에겐 필수언어처럼 취급되고 있습니다.
2. 자바의 역사
자바는 썬 마이크로시스템즈에서 개발되었습니다. 그러나 2010년, 오라클이 썬 마이크로시스템즈 회사를 인수하면서 현재는 오라클의 제품이 되었습니다.
3. 자바의 특징
자바는 JVM(Java Virtual Machine)을 사용해 운영체제(OS)에 독립적인 개발이 가능합니다.
❓ JVM(Java Virtual Machine)은 무엇이고, 운영체제에 독립적이라는 것은 무슨 뜻일까요?
- JVM은 자바를 실행시키기 위한 가상의 기계입니다. 가상의 기계는 실제로 존재하지 않지만 하드웨어와 소프트웨어를 통해 존재하는 것처럼 구현된 기계를 뜻합니다.
- 운영체제에 독립적이라는 것은 개발을 할 때 운영체제에 맞는 개발을 하기 위한 별도의 노력이 필요 없다는 뜻입니다. 자바로 작성한 프로그램은 모든 운영체제에서 실행 가능합니다.
❓ 그렇다면 왜 자바에서는 운영체제에 맞는 개발을 하지 않아도 될까요?
- JVM이 개발자들 대신 그 역할을 해주기 때문입니다.
객체 지향 프로그래밍
객체는 현실 세계에 존재하는 개념을 컴퓨터가 이해할 수 있는 방식으로 구현한 것을 의미합니다.
자바에서는 객체를 만들고, 만들어진 객체를 활용해 프로그램을 만들어 냅니다.
자동 메모리 관리 ( Garbage Collection )
컴퓨터에게 명령을 내리는 과정에서 메모리라는 저장공간을 사용하게 됩니다.
필요한 데이터/ 명령어를 메모리에 저장해 놓고 필요할 때마다 가져다 쓰게 되는데, 저장했지만 사용하지 않는 데이터가 생길 수 있습니다. 그럴 때 메모리가 낭비됩니다.
자바의 Garbage Collector는 이러한 메모리 낭비를 해결하기 위해 자동적으로 사용되지 않는 메모리를 관리해 줍니다.
다양한 무료 라이브러리
개발을 도와주는 오픈 소스 라이브러리가 풍부하기 때문에 프로그래밍 시간을 단축할 수 있습니다.
❓ 라이브러리란 무엇인가요?
- 프로그램에 활용될 수 있는 데이터와 명령어들의 집합입니다.
네트워크와 분산처리 지원
- 자바에서는 다양한 네트워크 라이브러리를 제공합니다.
- 물리적으로 떨어져 있는 여러 대의 컴퓨터를 네트워크로 연결시켜 하나의 컴퓨터처럼 처리하는 분산처리를 지원합니다.
멀티 스레드 지원
- 자바의 멀티스레드는 시스템과 관계없이 구현이 가능합니다.
- 멀티 스레드 라이브러리를 제공합니다.
- 여러 스레드에 대한 스케쥴링을 자바 인터프리터가 담당합니다.
❓ 멀티스레드란 무엇인가요?
- 멀티스레드는 한 프로세스 안에서 여러 개의 일이 동시에 진행되는 것을 의미합니다.
❓ 스케쥴링은 무엇인가요?
- 스케쥴링이란 프로세스가 생성되어 실행될 때 필요한 자원들을 할당하는 작업을 뜻합니다.
❓ 프로세스란 무엇인가요?
- 일반적으로 실행 중인 프로그램을 의미하고, 작업(Job) 혹은 태스크(Task)라고 불리기도 합니다.
❓ 자바 인터프리터란 무엇인가요?
- JVM의 구성요소 중 하나로 컴파일 된 자바 바이트 코드를 읽고 해석해 주는 프로그램입니다.
동적 로딩 지원
동적 로딩이란 클래스가 필요한 시점에 로딩하여 사용하는 것을 의미합니다. 따라서 일부 클래스가 변경되었을 때 전체 애플리케이션을 다시 컴파일하지 않아도 됩니다. 컴파일이란 프로그래밍 언어로 작성한 내용을 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 말합니다.
4. 자바 프로그램의 작동 방식
5. JVM의 메모리 구조
- 메서드 영역 (method area)
클래스 정보와 클래스 변수를 저장하는 메모리 영역입니다. - 힙 (heap)
인스턴스를 저장하는 메모리 영역입니다. - 호출스택 (call stack 또는 execution stack)
메서드가 호출될 때 할당되는 메모리 영역입니다. 호출스택은 아래에서부터 위로 쌓입니다.
메서드의 지역변수들과 연산의 중간결과 등을 저장하는 데 사용됩니다. 메서드가 끝나면 자동으로 메모리가 반환됩니다.
❗ 클래스, 클래스 변수, 인스턴스, 메서드 등은 자바 쉽게 배우기 6 - 클래스와 객체 에서 설명합니다.
6. JDK 다운로드
Oracle JDK
Open JDK - ZULU
원하는 자바 버전을 다운로드합니다. 최신버전보다는 그 이전 버전을 많이 사용합니다.
7. 환경 변수 등록
Windows 검색 상자에서 환경 변수를 검색해 [시스템 환경 변수 편집]에 들어갑니다.
(검색 상자가 없다면 작업 표시줄에서 우클릭 > 검색 > 검색 상자 표시를 눌러주시면 검색 상자가 표시됩니다.)
1.
[시스템 환경 변수 편집] > [환경 변수] > [시스템 변수(S) 아래의 새로 만들기(W)] >
변수 이름 : JAVA_HOME
변수 값 : JDK 설치 경로
입력 후 확인
2.
[시스템 변수(S)의 목록에서 변수명 Path를 찾아 클릭] > [편집] > [새로 만들기(N)] >
%JAVA_HOME%\bin
입력 후 위로 이동(U)을 눌러 목록 가장 위로 이동 후 모든 대화 상자에서 확인
3. Windows 검색 상자에 cmd를 입력한 후 명령 프롬프트가 실행되면
javac -version
입력 후 엔터
javac 버전이 정상적으로 출력되면 환경 변수가 잘 설정된 것입니다.
8. 개발 환경 구축
이클립스나 인텔리제이와 같은 오픈 소스 통합 개발 환경을 다운로드하여 준비하면 됩니다.
9. 자바 API
자바 8 버전 API입니다.
주소에서 숫자를 바꿔 다른 버전의 API도 확인해 볼 수 있습니다.
10. 도움 받은 책과 사이트
자바의 정석 - 남궁 성
혼자 공부하는 자바 - 신용권
혼자 공부하는 얄팍한 코딩 지식 - 고현민
자바 언어 공부를 시작하기에 앞서 자바가 무엇인지에 대해 간략하게 설명드렸습니다. 다음 글에서는 자바의 변수에 대해 알아봅시다.
'개발언어 > Java : 자바' 카테고리의 다른 글
자바 쉽게 배우기 6 - 클래스와 객체 (0) | 2023.01.06 |
---|---|
자바 쉽게 배우기 5 - 배열 (0) | 2023.01.04 |
자바 쉽게 배우기 4 - 조건문과 반복문 (0) | 2023.01.03 |
자바 쉽게 배우기 3 - 연산자 (0) | 2023.01.02 |
자바 쉽게 배우기 2 - 변수 (0) | 2023.01.01 |