[JAVA] Java란 + α

DongGyu Jung·2021년 12월 27일
0

자바(JAVA)

목록 보기
1/60
post-thumbnail

🏃‍♂️ 들어가기 앞서..

본 게시물은 스터디 활동 중에 작성한 게시물로 자바의 정석-기초편 교재를 학습하여 정리하는 글입니다.
※ 스터디 Page : 〔투 비 마스터 : 자바〕

*해당 교재의 목차 순서와 구성 내용을 기준으로 작성하며
부족할 수 있는 내용은 추가적인 검색을 통해 채워나갈 예정입니다.



자바(Java) 란?

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) : 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행프로그램을 위한 이진 표현법 → "소프트 웨어에 의해 처리" _ 보통 기계어보다 더 추상적


※ 특징

앞서 설명한 내용에서는 자바 언어의 장점이 부각되어 보이지만
완벽한 것은 없듯이 단점 또한 있다.

매도 먼저 맞는게 낫다는 말이 있으니 단점을 먼저 알아보자.

😭 자바(Java)의 단점

  • 느리다
    : 처리 속도가 중요한 애플리케이션에는 적합하지 않다.
    (하지만 지속적인 업데이트를 통해 상당히 빨라지고 있음)

  • 예외처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해줘야 하는 불편하다

  • 작성해야할 코드의 길이가 긴 편이다

그럼에도 세계 사용률 1, 2위를 다툴 정도로 많이 사용되는 이유가 무엇일까?

😍 자바(Java)를 사용하는 이유

가장 대표적인 객체 지향 언어
: 처음 개발할 때부터 객체 지향 언어로 개발한 언어인만큼 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/

0개의 댓글