반응형

자바 Java

1. Java란? 자바 Javac 기계어 가상기계어 JVM 객체지향 언어

 

 

 

안녕하세요! 태마입니다.

자바 Java 정리입니다.

 

정리의 경우 

1. 상세 정리 & 상세 개인 의견

으로 이루어져 있습니다.

 

자바 JAVA

 

포스팅 시작하겠습니다 :)

 

 


 
반응형

 

1. 상세 정리 & 상세 개인 의견

 

 

 

Java란?

Java는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어입니다.

2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 Java의 저작권은 오라클이 소유하고 있습니다.

제임스 고슬링이 Java라는 이름의 커피를 좋아해서 Java 로고에도 커피 그림이 들어가 있습니다.

하지만 찾아보니 Java라는 이름은 단어 리스트 중 무작위로 뽑아서 선택한 것으로 나와 있습니다.

 
 

Java가 만들어진 배경

원래는 같은 소스더라도, 각 운영체제의 컴파일러로 컴파일을 했어야 하고,

컴파일 된 파일은 해당 운영체제에서만 사용이 가능합니다.

여기서 문제는 같은 소스를 각기 다른 컴파일러로 컴파일을 하기만 하면 되는 것이 아니고,

코드 내 명령어라던지 등의 문제들도 각 운영체제에 맞게 소스를 수정하는 일이 필요했습니다.

따라서 개발자들은 소스를 만들더라도 어떤 운용체제인지 알고 고민을 했어야 했습니다.

이를 해결하기 위해 나온 것이 java이며, WORA(Write Onece Run Anywhere)의 슬로건으로 등장했습니다.

 

 

가상 기계어(Bytecode)
Java의 경우 소스를 Java 컴파일러(Javac)를 통해, 가상 기계어(bytecode)로 컴파일(.class 파일) 하며
각 운영체제에 맞는 실행기(JVM)를 통해

어떠한 운용체제인지 개발자가 고민하지 않도록 했습니다.

 
반응형
 

기계어

기계어란 컴퓨터의 관점에서 바로 읽고 처리할 수 있는 언어를 얘기합니다.
단, 사람의 입장에서 봤을 때에는 매우 불편하고 어려운 언어이기 때문에
사람의 관점에서 봤을때 비교적 편한 방법으로 개발할 수 있게 프로그래밍 언어(C, C++, Java 등)들이 나타나게 되었고,
이를 Compile이라는 과정을 통해, 기계어로 변환하여 컴퓨터가 읽을 수 있게 합니다.
 
Java 이전의 언어들은 운영체제에 맞게 개발 후, 컴파일을 하면
컴퓨터가 바로 알아들을 수 있는 언어(기계어)로 컴파일 된 파일을 실행하여서 바로 실행이 가능하였기 때문에

개발자가 소스를 작성함에 있어 운영체제에 맞게 소스코드를 작성했어야 하나,

소스코드(OS에 맞게) > 컴파일 > 기계어 > 실행

 

Java의 경우 운영체제와 관련 없이 개발 후, 컴파일을 하면 가상 기계어로 작성된 (.class파일)을 생성하게 되고,

이 가상 기계어로 작성된 파일을 각 운영체제에 맞는 bytecode 실행기(JVM)로 실행하여

JVM이 각 운영체제에 맞게 실행을 하게 되어,

개발자가 소스를 작성함에 있어 운영체제를 신경쓰지 않고 작성하게 되었습니다.

소스코드(OS 상관없이) > 컴파일 > 중간기계어 > 실행(OS에 맞는 실행기)
더보기

 

추가로 Java와 다른 언어인 코틀린(Kotlin)의 경우에 컴파일 시 .class 파일을 생성하는데,

JVM의 경우 .class 파일로 작성된 파일을 실행하기 때문에 코틀린으로 작성된 코드 또한

JVM로 실행시킬 수 있습니다.

Kotlin의 경우에는 JVM으로 실행한다는 전제하에 개발된 언어기 때문에 가능한 것입니다.

 

 

객체지향 언어

객체지향 언어를 설명하기 전, 객체라는 개념을 간단하게 짚고 넘어간다면

객체(Object)란 어떠한 속성(메소드)과 기능(필드)을 가지고 있는 것입니다.

객체지향 언어란 프로그램을 단순히 데이터와 처리방식, 명령을 내리는 시선에서 벗어나,

프로그램을 수많은 객체라는 단위로 나누고, 이들의 상호작용을 통해 서술하는 방식입니다.

 

추가로 Java는 객체지향 언어가 맞으나, 완벽한 객체지향 언어는 아닙니다.

이유는 기본형 변수(원시 타입)은 객체로 취급하지 않기 때문이며,

모든 것을 객체로 취급하는 언어를 순수 객체지향언어라 부르는데 대표적으로

Python, Rudy 등이 있습니다.

 


 

반응형

 


 

Java 정리 <2. JVM>

으로 돌아오겠습니다.

 

 


 

 

반응형

+ Recent posts