[문과생의 JAVA 배우기] JAVA란?

Java

문과생인 나는 수학,과학 포기자이다.

그리고 10년만에 공부할려고하 쉽지는 않다.

학원을 다니면서 배우는 JAVA는 따라가기 부족하였고 조바심이나 눈물도 많이 흘렸다.

포기할까 싶기도 하였지만 포기하지 않고. 기본 개념부터 정확히 이해하고 가자는 마인드로 글을쓰기 시작한다.

내가 쓰는 글은  내가 공부를 하는것도 있겠지만 나처럼 자바 공부하는 사람들한테 도움이 되고자 작성한다.

오늘은 첫번째인 자바란 무엇인가와 자바 가상머신에 대해 준비하였다.

 

1. 자바(JAVA)란?

자바(JAVA)란?

1995년 개발한 객체지향 프로그래밍 언어로써 창시자는 제임스 고슬링이다.

자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이가능하다.

 

객체지향 프로그래밍이란?

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 개발에서 사용되는 프로그래밍 패러다임 중 하나이다.

이 방법론은 현실 세계의 사물을 모델링하여 프로그램을 구축하는 데 중점을  둔다.

      주요한 개념

● 클래스(Class)와 객체(Object): 클래스는 유사한 속성(attribute)과 행동(behavior)을 갖는 객체들을 만들기 위한 일종의 설계 도면이다.

객체는 클래스의 인스턴스(instance)로서 실제로 메모리에 할당된 것이다.

클래스는 객체를 생성하기 위한 템플릿 역할을 하며, 객체는 클래스에 정의된 속성과 메서드를 가지고 있다.

 

● 캡슐화(Encapsulation): 데이터와 해당 데이터를 조작하는 메서드들을 하나로 묶어 외부로부터의 접근을 제어하는 것을 말한다.

클래스 내부의 상태는 보호되며, 외부에서 직접적인 접근을 허용하지 않고 메서드를 통해 상호작용한다.

 

●  상속(Inheritance): 부모 클래스(상위 클래스 또는 슈퍼 클래스)의 특성과 행동을 자식 클래스(하위 클래스 또는 서브 클래스)가 물려받는 것을 의미한다.

이를 통해 코드의 재사용성을 높이고, 계층적인 구조를 형성하여 코드의 확장성을 증가시킨다.

 

●다형성(Polymorphism): 다형성은 동일한 인터페이스를 통해 다양한 형태로 구현되거나 동작할 수 있는 능력을 의미한다.

이는 메서드 오버라이딩(Override)과 메서드 오버로딩(Overloading)을 통해 구현된다

 

객체지향 프로그래밍은 복잡한 문제를 보다 모듈화되고 유연한 방식으로 해결할 수 있도록 도와주며, 코드의 가독성과 유지 보수성을 향상시킨다.

2. 자바(JAVA)의 특징

● 이식성(Platform Independence): 자바는 “Write Once, Run Anywhere(WORA)” 원칙을 따른다. 즉, 한 번의 작성으로 다양한 플랫폼에서 실행될 수 있도록 설계되어있다.

이는 자바 프로그램이 특정 운영 체제에 종속되지 않고, 자바 가상 머신(JVM) 위에서 실행되기 때문에 가능하다

 

● 객체 지향적( Object-Oriented): 자바는 객체 지향 프로그래밍(OOP) 언어입니다.

클래스와 객체를 기반으로 하며, 이로 인해 모듈화된 코드를 작성하여 코드의 재사용성을 높이고 유지 보수를 용이하게 한다.

 

● 멀티스레딩 지원(Multi-Threading Support): 자바는 멀티스레드를 쉽게 구현할 수 있도록 지원한다.

이는 여러 작업을 동시에 실행하여 성능을 향상시키고, 병렬 처리를 가능하게 한다.

 

● 동적( Dynamic): 자바는 동적 로딩을 지원하여 필요한 시점에 클래스를 로드하고 사용할 수 있다.

이는 유연성을 높여주고, 애플리케이션의 성능을 최적화하는 데 도움이 된다.

 

● 보안( Security): 자바는 강력한 보안 기능을 갖추고 있다. 산업 표준인 보안 프로토콜과 암호화 라이브러리를 사용하여 안전한 애플리케이션 개발을 지원한다.

 

● 대규모 애플리케이션 지원(Large-Scale Application Support): 자바는 대규모 시스템 및 네트워크 애플리케이션을 위한 강력한 기능을 제공한다.

이는 대용량 데이터 처리, 분산 시스템 구축, 웹 애플리케이션 개발 등 다양한 영역에서 활용된다.

 

● 풍부한 라이브러리 및 도구( Rich Libraries and Tools): 자바는 다양한 라이브러리와 개발 도구가 풍부하며,

이는 개발자들이 효율적으로 소프트웨어를 개발하고 관리할 수 있도록 지원한다.

 

● 지속적인 업데이트와 발전(Continuous Updates and Evolution):

자바 커뮤니티와 기업들은 지속적인 업데이트를 통해 언어의 기능을 향상시키고 보안을 강화하며,

최신 기술 동향에 발맞춰 자바를 발전시키고 있다.

 

이러한 특징들로 인해 자바는 다양한 산업 분야에서 널리 사용되며, 안정성과 이식성을 갖춘 소프트웨어 개발에 큰 영향을 미치고 있다.

 

3. 자바 가상머신 (JVM)

자바 가상 머신(Java Virtual Machine, JVM)은 자바 프로그램을 실행하기 위한 핵심적인 컴퓨터 환경을 제공하는 소프트웨어입니다. JVM은 자바의 핵심 개념 중 하나로, 자바 프로그램이 특정 플랫폼에 종속되지 않고 이식 가능하게 만드는 핵심적인 역할을 수행합니다.

JVM은 자바 소스 코드를 컴파일한 바이트 코드를 해석하고 실행합니다. 자바 컴파일러는 자바 소스 코드를 바이트 코드라 불리는 중간 형태의 코드로 변환합니다. 이 바이트 코드는 JVM이 이해할 수 있는 형태로 되어 있어서, JVM 위에서 실행될 수 있습니다.

 

JVM은 여러 가지 주요한 기능을 수행한다.

 

 ● 바이트 코드 해석(Interpretation of Bytecode): JVM은 자바 소스 코드를 컴파일하여 생성된 바이트 코드를 해석하여 해당 플랫폼에 맞게 실행한다.

 

● 메모리 관리(Memory Management): JVM은 메모리 할당 및 관리를 담당한다.

가비지 컬렉션(Garbage Collection)을 통해 더 이상 사용되지 않는 객체들을 자동으로 제거하여 메모리를 최적화한다.

 

● 임시 저장소(Storage): JVM은 클래스 파일, 메서드 등을 저장하기 위한 임시 저장소를 제공한다.

 

● 스택 관리(Stack Management): JVM은 메서드 호출과 관련된 스택을 관리한다.

각 스레드마다 별도의 실행 스택을 갖고 있고, 메서드 호출 시에는 호출 스택을 사용하여 메서드 실행 정보를 관리한다.

 

● 설계된 플랫폼에 따른 구현(Platform-Specific Implementations): JVM은 각 플랫폼(OS, 운영 체제)에 맞춰 구현되어 있다.

따라서 자바 프로그램은 JVM이 설치된 모든 플랫폼에서 실행될 수 있다.

JVM은 특정 플랫폼에서 독립적으로 동작하면서 자바 프로그램의 이식성을 보장하고, 자바의 주요 장점 중 하나인 “Write Once, Run Anywhere(WORA)”를 가능하게 한다.

자바 프로그램은 한 번의 컴파일만으로 다양한 운영 체제와 장치에서 실행될 수 있으며, 이는 JVM이 각 플랫폼에 맞게 바이트 코드를 해석하여 실행하기 때문에 가능한것이다.

답글 남기기