🏃♂️ 들어가기 앞서..
본 게시물은 스터디 활동 중에 작성한 게시물로 자바의 정석-기초편 교재를 학습하여 정리하는 글입니다.
※ 스터디 Page : 〔투 비 마스터 : 자바〕
*해당 교재의 목차 순서와 구성 내용을 기준으로 작성하며
부족할 수 있는 내용은 추가적인 검색을 통해 채워나갈 예정입니다.
Oracle사 (Java 소유사) 曰 "세계에서 가장 인기있는 최신 개발 플랫폼"
1995년 개발된 객체 지향 프로그래밍(OOP : Object-Oriented Programming) 언어 이다.
현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나다.
(한국에서 백엔드 개발자로 일하려면 자바,스프링은 필수라는 말이 있다.)
이 자바는 3가지 에디션으로 존재하는데
- Java SE (Standard Edition)
: 대부분의 사람들이 가장 많이 접하는 표준 에디션으로
핵심 API와 기능들을 제공한다 ( JDK 참고 )
- Jakarta EE (Enterprise Edition) [(구) Java EE]
: 기업에서 운영하는 서버 페이지에 특화됨 (JSP & Servlet 등 웹 애플리케이션 서버 관련 기술 포함 )
- Java ME (Micro Edition)
: 개인정보 단말기(PDA), 셋톱박스, 센서 등 (임베디드 시스템 환경)에 특화
이렇게 3가지로 나뉜다.
이 자바 언어는 유닉스 기반의 배경을 가지고 있어서 C 언어의 문법적 특성이 비슷하다.
그렇기에 C언어와 동일하게 컴파일 언어 중 하나이지만 다른 컴파일 언어들과 다른 점이 있다.
바로 "플랫폼이 독립적"이라는 점인데
자바 컴파일러는
자바 언어 프로그램을 바이트 코드(Bytecode)라는 특수한 바이너리(Binary) 형태로 변환한다.
이 변환된 바이트코드를 실행시키기 위한 특수한 전용 가상 머신
JVM(Java Virtual Machine)이 존재한다.
(JVM에 대해서는 다음에 더 자세히 알아보자.)
이 JVM은 자바 바이트 코드를
"어느 플랫폼에서나 통일한 형태로 실행"시키기 때문에
자바 프로그램은 "CPU나 운영 체제 상관없이 JVM을 설치할 수 있다면 어디서나 실행 가능" 하다.
*바이트 코드(bytecode) : 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행프로그램을 위한 이진 표현법 → "소프트 웨어에 의해 처리" _ 보통 기계어보다 더 추상적
앞서 설명한 내용에서는 자바 언어의 장점이 부각되어 보이지만
완벽한 것은 없듯이 단점 또한 있다.
매도 먼저 맞는게 낫다는 말이 있으니 단점을 먼저 알아보자.
느리다
: 처리 속도가 중요한 애플리케이션에는 적합하지 않다.
(하지만 지속적인 업데이트를 통해 상당히 빨라지고 있음)
예외처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해줘야 하는 불편하다
작성해야할 코드의 길이가 긴 편이다
그럼에도 세계 사용률 1, 2위를 다툴 정도로 많이 사용되는 이유가 무엇일까?
① 가장 대표적인 객체 지향 언어
: 처음 개발할 때부터 객체 지향 언어로 개발한 언어인만큼 OOP의 개념을 철저하게 따르는 언어이다.
OOP는 다양한 프로그래밍 언어 중에서도 공통적으로 많이 사용되기 때문에
타 언어를 접할 경우 용이하게 학습이 가능하다.
② 플랫폼이 독립적인 언어
: 운영체제 상관없이 한 번 작성되어 컴파일된 클래스(.class)파일이 동일하게 실행된다.
③ 스레드(Tread) 지원하는 언어
: API에서 스레드 기능을 지원하기 때문에 스레드 사용 프로그램 작성에 용이하다
심지어 여러 쓰레드에 대한스케쥴링(scheduling) 을 자바 인터프리터에서 담당한다.
(ex. 채팅 프로그램)
④ 분산 환경에 적합한 언어
: 본래 네트워크 프로그래밍 용도였기에 당연히 이를 위한 다양한 API 제공하여 분산 환경 프로그래밍에 적합하다.
⑤ 프로그래머 친화적 언어
: 메모리를 직접 제어하지 않고 JVM을 통해 메모리를 관리해서 알아서 필요없는 메모리를 제거해주는 등의 작업을 한다.
( C와 같은 포인터 개념 X )
⑥ 보안 강한 언어
: 네트워크 프로그래밍 시 허가가 없으면 외부에서 해당 애플리케이션 구조 및 데이터에 접근 못하도록 막을 수 있다.
⑦ 견고한 구조를 가지는 언어
: 엄격한 타입 체킹을 지원하며 프로그램 실행 시에도 에러를 처리한다.
⑧ 동적 언어
프로그램에 실행될 때 필요한 라이브러리들을 연결하는 기능을 제공한다.
⑨ RTTI(Run Time Type Information) 지원
: 호출 method를 RunTime시에 결정해서 다형성 기능 사용이 가능하다.
⑩ 접근성과 많은 사용자층을 가진 언어
세계에서 사용률 1,2 순위를 앞다투는 언어인만큼 수많은 개발자들과 레퍼런스를 보유하고 있기 때문에 정보습득에 용이하다.
⑪ 풍부한 클래스 라이브러리를 가진 언어
*JDK (Java Development Kit) : 자바 개발을 위한 도구들의 모음 (API, Document, 컴파일러 실행 및 배포 도구 등)
물론 자신이 진출하고자하는 분야가 확실하고
해당 분야에서 자바를 필요로 하지 않는다면 당연히 깊게 공부할 필요까진 없다.
하나의 Java 애플리케이션에는 main 메서드를 포함한 클래스가 반드시 하나는 있어야함.
(Exception in thread "main" java.lang.NoShuchMethodError:
에러 발생)
범위 주석 = /* */
사이 내용
한 줄(Line) 주석 = //
부터 라인 끝까지
문법적 오류 발생 = illegal start of expression
★ CheatSheet : https://introcs.cs.princeton.edu/java/11cheatsheet/