본문 바로가기

Kosta 교육

[Day1 - JAVA] 자바 소개

1) platform independent (Java, C#)

: 독립적이지 않을 경우 사용자가 어떤 프로그램을 쓰는지에 따라 운영체제가 다르기 때문에 운영체제에 따라서 버전이 많이 필요함

>>  JAVA의 경우 어떤 운영체제더라도 하나의 클래스 파일이 다른 운영체제에서 잘 돌아가기 때문에 컴파일 할 필요가 없음

 

원리 ) 바이너리 체계가 다르기 때문인데, JAVA는 최종 컴파일 된 실행 파일이 완벽한 이진파일이 아닌 중간단계인 어셈블리어 파일. Java Virtual Machine이 어셈블리어 파일을 완벽한 이진파일로 변환하는 과정을 거치기 때문에 모든 운영체제에서 실행이 가능하다.

단점 ) 매번 실행할 때마다 다시 한 번 컴파일을 진행하기 때문에 속도가 느려짐 (But, 하드웨어가 빨라졌기 때문에 문제가 되지 않음)

 

2) OOP (객체지향 언어)

: 재사용성이 뛰어남

: 유지보수 용이

 

* 객체지향 언어란?

+ 소프트웨어 : 인간이 만들기에 이는 인건비. 따라서 하드웨어보다는 소프트웨어가 훨씬 비싸며, 인건비에 따라서 계속 올라감. 또한, 이는 만드는 것이 끝이 아닌 지속적인 유지 보수가 필요함.

:  소프트웨어를 조금 더 싸게 활용하기 위해 기존에 사용하던 것을 가져와서 사용한다면 어느 정도의 비용이 절감될 수 있음. 이를 위해 객체지향 언어가 사용됨

: 함수로 봤을 때 변수만 바뀌어서 사용되는 것이라고 보면 됨. 즉, 기능별로 묶어서 사용함.

 

3) Simple & Easy

: 클래스 상속은 단일 상속만 지원 (OOP의 특징 중 하나)

: 포인터를 지원하지 않아 직접적인 메모리 접근 불가

 

4) Garbage Collector 

: Heap 메모리 영역의 객체들을 정리

 - 운영체제는 메모리 관리와 프로세스를 운영

: 프로그램을 실행함과 동시에 메모리에 올라가는 것, 내리는 것 등을 알아서 중재해줌 (메모리가 부족하거나 CPU가 쉬고 있을 때 이를 알아서 메모리를 할당해주는 역할을 함)

 

5) Database Independent(JDBC; JAVA DATABASE CONNECTIVITY) 

: JDBC interface 이용시 DB에 독립적 = DBMS는 데이터베이스를 관리해주는 일종의 시스템

: JDBC를 이용하면 DB를 변경하는 것에 문제가 없음. (코드를 바꾸지 않고 DB만 변경해주면 됨)

 

6) Multi-Threading 지원

:  하나의 프로그램 안에서 여러 개가 동시에 실행되는데 이는 멀티 쓰레드에 의해서 작동됨