본문 바로가기

개발 이야기/Java

01. Java의 특징




특징1. Java는 객체지향 프로그래밍이다. 

특징2. Java는 JVM 사용으로 이식성이 높다.


 'Java는 객체지향 프로그래밍이다.' 라는 말과 함께 객체가 무엇인지 객체지향이란 무엇인지 수 없이 많이 들어왔다. 

 그렇지만, 그냥 그 말만 들었을뿐 항상 명쾌하게 와 닿지는 않았다. 내가 이 설명이 와 닿았던 것이 언제인가? 어느 교수님의 설명으로 이해하게 된걸까? 학교를 졸업하고 난 후, 그냥 단순히 면접에 대비하여 이론공부를 했고 이것저것 코딩하고 있을 때 즈음 무릎을 탁 치며 알게 되었다. '이래서 객체지향이구나! 이래서 C언어랑은 다른거구나!' 하고 말이다. (물론 또 지금은 시간이 많이 지났으므로 그때만큼 명쾌하게 이해되고 있진 않은 것 같다.)

 각설하고 이 포스팅을 읽고 이해가 안되도 괜찮다. 아마 특징1에 해당 되는 내용은 나 처럼 여러번 이것저것 읽고 코딩하다가 어느날 갑자기 확 와닿는 날이 있을 것이다.



특징 1. Java는 객체지향 프로그래밍이다.

 여러가지 부품들이 모여, 어떤 기능을 하는 부속품을 만들어 냈다. 그 부속품들이 모여 서로 맞물려 돌아가는 커다란 기계가 완성된다. 이러한 과정을 쳐 완성 된 기계가 '객체지향으로 완성된 기계'라 할 수 있겠다.


흔한 예시① 계산기


 - Java로 계산기를 구현한다 가정하고 어떤식으로 설계할지 구상 해보면 아래와 같다.

 

1) 계산 할 숫자 입력 받기

   : 0~9까지 연산 할 숫자를 입력받아야 함

2) 계산하기

   : 각각의 연산버튼 기능을 나누어 구현(+, -, *, / 등)

3) 계산결과를 출력

   : 연산을 마친 뒤, 연산결과를 화면에 띄워준다.


1)~3)의 순서대로 돌아가는 프로그램을 만들기 위해 각각의 기능에 따른 메소드와 클래스를 만들고 계산기를 만들 수 있겠다. 이렇게 완성 된 것이 객체지향으로 완성 된 계산기이다.




흔한 예시② 자동차



 - Java로 자동차를 구현한다 가정하고 어떤식으로 설계할지 구상 해보면 아래와 같다.


 1) 자동차의 기능별 클래스 나누기

   : 바퀴/ 엔진/ 핸들/ 브레이크 등

 2) 클래스가 순서대로 동작하도록 Main 작성하기

   : 시동을 켠다 > 엑셀을 밟음 > 엑셀 동작 > 바퀴 움직임 > 브레이크 밟음 > 엔진멈춤 > 바퀴멈춤


 1)~2)의 과정을 거쳐 만들어진 가상 자동차 역시, 객체지향으로 완성된 자동차이다.


예시 ①, ②와 같이 설계한 프로그래밍을 객체 지향 프로그래밍이라 한다. 

즉, 각 객체가 하는 일이 정해져 있도록 설정한 뒤 객체가 하는 일을 명령어로 구현하는 것이 객체지향 프로그래밍이다.



특징2. Java는 JVM 사용으로 이식성이 높다.

 일반적인 다른 언어들은 하드웨어나 운영체제에 따른 프로그래밍 제약이 따르는 반면, Java는 가상머신 사용으로 비교적 제약이 적다.

 사용자가 .java 파일을 작성하여 javac으로 파일으로 컴파일을 하게 되면, .class라는 확장자를 가진 파일이 생성된다. 이때 .class파일은 자바 가상머신이 읽을 수 있도록 바이트 코드로 해석 된 것이다. 결국 이 .class 파일을 가지면 Java가 설치 된 모든 곳에서 사용 가능하게 된다.

( .java작성 > javac컴파일 > .class파일 생성 > Java가 설치 된 모든곳에서 사용 가능 )