필자는 자바를 별로 좋아하지 않는다. 너무 길고 복잡하고... 사실 학부 때 C언어를 먼저 배우고 시작해서 Java보다 C에 편안함을 느끼는 것이 영향을 꽤 크게 주고 있을 거라는 생각도 든다. 하지만 두가지 언어 모두 객체지향 언어로써 어떤 차이가 있는지 한번도 제대로 생각해 본 적이 없다. 이 둘은 왜 따로 사용하고 어떤 차이가 있기에 쓰이는 곳이 다르고 어떤 특징이 있는걸까?
아 그전에 C와 C++ 이 어떤 차이인지 알아야 하는데 ( C는 절차지향언어로 개발 되었기 때문에 C++과도 살짝 다른 부분이 존재한다. ) 아래 글을 참고하면 좋을 것 같다.
## 링크 ##
JAVA 기초
자바는 객체지향 프로그래밍 언어로써 ( 주로 Object Oriented Programming 이라고 한다. ) 1991년 Sun Micro Systems에서 개발하여 현재 오라클이 인수하여 관리하고 있는 언어이다. 이런 얘기 하면 또 역사라 재미없으니 본론만 보자.
자바는 2001년부터 지금까지 계속해서 사용되는 Programming 언어 순위에서 1,2위를 다툴만큼 인기있고 많이 사용되고 있는 언어이다. 개인이 사용하는 것보다는 주로 기업에서 사용하는 언어인데, 대표적으로 우리가 사용하는 안드로이드 폰에 들어가는 언어가 JAVA 기반으로 이루어져있다. ( 요즘은 Kotlin을 사용하고 있지만 사실상 Java를 대체하고 있는 과도기 이고 header와 연결된 부분들을 따라가다 보면 java로 이루어져 있는 경우가 많다. )
JVM
자바 프로그램은 바이트 코드 파일 ( .class ) 로 구성된다. 이 코드 파일은 OS에서 바로 실행할 수 없고 JVM ( Java Virtual Machine ) 이라는 뭐 쉽게 말하면 번역기 같은게 필요하다. .class파일을 OS가 보면 이게 대체 무슨말이야~ 하고 있을 때 JVM이 번역해서 OS가 실행할 수 있도록 바이트 코드 파일을 기계어로 번역해주는 것이다.
여기까지 보면 어 이거 단점아니야? OS에서 바로 실행도 못하고 JVM이 번역해줘야 하는건데 이거 불편한거 아니야? 라고 생각할 수 있겠지만 우리가 여행갔을때를 생각하면 편하다.
우리가 영어를 익혀서 미국에 가면 통역사가 필요없이 대화를 편하게 할 수 있다. 하지만 다음 행선지로 중국을 간다면 영어로 아무리 말해봤자 상대는 대체 무슨말이야? 하고 무시당할 가능성이 높다.
바로 이런점에서 JVM의 장점이 발휘된다. 우리가 자바 프로그래밍을 열심히 했는데, OS는 윈도우10이었다. 근데 이걸 mac이나 linux 에서도 JVM을 통해 다양한 운영체제에서 독립적으로 사용할 수 있게 만들어 주기 때문이다.
JAVA의 특장점
1. 위에서 설명했던 것처럼, JAVA는 JVM위에서 실행되기때문에 여러 운영체제에서 실행될 수 있다.
2. C처럼 절차지향 언어가 아닌 객체지향 프로그래밍 언어이다.
3. 자바는 GC를 자동으로 하기 때문에 메모리 관리에 신경쓰지 않고 개발할 수 있다.
그런데 JAVA는 정말 GC를 자동으로 해주어 메모리 누수 ( Memory Leak ) 을 신경쓰지 않고 개발해도 되는걸까?
## 링크 ##
C++ 기초
C++은 이름에서부터 알 수 있듯 C 언어를 확장하여 만들었다. 기존 C언어의 경우는 절차적 프로그래밍 언어에 효율적인 실행을 목표로 설계되었다.
'Software 알쓸신잡 > Code Trend' 카테고리의 다른 글
네이티브앱이란? (0) | 2021.04.05 |
---|---|
SPA (Single Page Application) (0) | 2021.04.05 |
Diagram 이란? - 다이어그램 이해하기 (0) | 2020.11.17 |
Plant UML 작성법 (0) | 2020.11.17 |
Visual Studio Code + Plant UML 을 통한 Diagram 작성 (0) | 2020.11.17 |
댓글