JAVA 입문

2021. 8. 13. 21:44Java

반응형

역사

1995년 자바의 아버지라고 불리는 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어.

가전제품을 제어하기 위한 언어로 고안되었지만 웹의 등장으로 주류 언어가 되었다.

 

 

특징

* 객체 지향 언어

[객체(Object)? 현실세계에서 존재하는 모든 것. (유형, 무형, 개념 등)

자바에서 객체? 클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역에 생성된 것]

└ 상속, 캡슐화, 다형성이 적용된 순수 객체지향언어

(상속 : 부모 클래스에서 정의된 필드와 메소드를 자식이 물려받는 것)

(캡슐화 : 데이터와 코드의 형태를 외부에서 알 수 없게하고 (정보은닉효과), 데이터의 구조, 역할, 기능을 캡슐화하여 관리)

(다형성 : 한 객체가 다른 여러 형태(객체)로 재구성되는 것 ex) 오버로드(overload), 오버라이드(Override))

└ 재활용성, 유지보수의 용이성

* C와 C++언어의 문법을 바탕으로 개발된 언어

* C와 C++이 가진 어려운 문법인 포인터와 다중 상속 제거

* 플랫폼에 독립적 (높은 이식성)

└ C나 C++은 특정 프로그램에서만 동작 ex) 리눅스에서 개발된 프로그램은 리눅스에서'만' 실행

 자바는 JVM()만 있으면 윈도우, 리눅스, 맥등 어떤 플랫폼에서도 실행 가능

※ JVM : 자바 가상 머신. 자바로 만들어진 프로그램을 실행해주는 프로그램

자바 응용 프로그램은 JVM과만 통신(OS나 H/W에서 실행되는 것 X)

└ JVM은 자바 응용프로그램으로부터 전달받은 명령을 자바 컴파일러를 통해 자바 바이트 코드로 변환하여 전달

 

※ JVM 구성

1. 자바 인터프리터(interpreter) : 자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할

2. 클래스 로더(class loader) : 동적으로 클래스를 로딩해주는 역할

3. JIT 컴파일러(Just-In-Time compiler) : 자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 바로 기계어로 변환하는 데 사용

4. 가비지 컬렉터(garbage collector) : 더는 사용하지 않는 메모리를 자동으로 회수

* 메모리를 자동으로 관리

└ 메모리 할당하거나 다 사용한 메모리를 다시 반납해야하는 작업을 프로그래머가 직접 해야한다면

  Java에선 Garbage Collector라는 것이 존재해서 그 작업을 자동으로 관리 → 프로그래머가 프로그래밍에만 집중하도록 도움

* 동적 로딩 지원

└ 필요할 때마다 메모리에 일부 공간을 가져다 쓰고 다시 가져다 쓰기 전으로 되돌려 놓는 것이 가능

* 멀티 쓰레드 지원

└ 동시에 여러 일을 할 수 있는 멀티 태스킹 기능 제공

* 네트워크 분산환경 지원

└ Java API : 인터넷과 대규모 분산환경을 염두해 다양한 '네트워크 프로그래밍 라이브러리'를 통해 비교적 짧은 시간에 프로그램 개발

 

출처: Opentutorials.org

Java SE, JDK, JRE

Java SE(Java Platform, Standard Edition)는 자바의 표준안.

자바라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의

== 구체적인 소프트웨어가 아니고 그 소프트웨어의 설계도 

소프트웨어에서는 설계도라는 표현 대신에 명세서(spec, specification)이라는 표현을 사용.

ex) Java SE 7 == 버전7에 대한 명세서

이 명세서는 JCP(Java Community Process, http://jcp.org)라는 조직을 통해서 만들어진다.

JDK(Java Development Kit)는 Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어

JDK를 다운받아서 설치 후 Java 프로그램을 실행하면 Java 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구

그리고 JRE가 포함. 즉 개발자를 위한 자바 버전.

JRE(Java Runtime Environment)는 자바가 실제로 동작하는 데 필요한 JVM, 라이브러리, 각종 파일들이 포함

자바로 만들어진 프로그램을 구동하려고 한다면 JRE를 설치. 일반인을 위한 자바 버전.

JVM(Java Virtual Machine) JVM은 자바가 실제도 구동하는 환경.

자바로 만들어진 소프트웨어는 JVM이라는 가상화된 환경에서 구동되고,

하드웨어나 운영체제에 따라서 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라서 만들어진 JVM이 알아서 해결.

하나의 자바 프로그램을 만들면 어떤 환경에서도 실행할 수 있는 것이 바로 JVM의 역할.

 

 

JDK의 분류

Java SE (Standard Edition)
자바의 핵심으로 일반적으로 자바라고 하면 Java SE를 의미

Java EE (Enterprise Edition) 
기업용 시장에서 사용하는 자바 개발환경

Jave Me (Micro Edition)
모바일 개발을 위해서 사용하는 자바 버전

 

 

출처 : opentutorials.org

자바 프로그램 구동 원리

소스 코드 : 프로그래밍 언어로 기술한 텍스트 파일 (.java 확장자의 소스 파일)

컴파일 : 소스코드로는 컴퓨터가 이해하질 못해서 소스파일을 0,1로만 이루어진 기계어로 변환

바이트 코드 : 소스 코드를 컴파일한 코드 (.class 확장자의 클래스 파일)

JVM : 바이트코드를 해석하여 자바 프로그램 실행

 

 

메모리 구조

RAM 구조 설명
Static static 예약어로 선정된 필드, 메소드가 저장되는 공간 ex) 클래스 변수 등
Heap new 연산자에 의해 동적으로 할당하고 저장되는 공간 ex) 객체, 배열 등
Stack 메소드를 호출하면 자동 생성, 끝나면 자동 소멸 ex) 지역 변수, 매개 변수 등

 

 

클라우드 서비스

개발환경 구축할 필요 없이 간단하게 프로그래밍 작업 테스트할 수 있는 사이트

https://www.jdoodle.com/online-java-compiler/

 

JDoodle - free Online Compiler, Editor for Java, C/C++, etc

JDoodle is a free Online Compiler, Editor, IDE for Java, C, C++, PHP, Perl, Python, Ruby and many more. you can run your programs on the fly online and you can save and share them with others. Quick and Easy way to compile and run programs online.

www.jdoodle.com

반응형

'Java' 카테고리의 다른 글

상속, super과 super()  (0) 2021.09.17
클래스, 인스턴스와 객체  (0) 2021.09.15
public static void main (String[] args)  (0) 2021.09.14
배열, 메소드  (0) 2021.09.13
자바 입문 2  (0) 2021.09.03