JAVA/끄적끄적

[Java] 자바란 무엇인가?

포포015 2021. 8. 25. 12:37

자바의 탄생과 역사

- 자바는 1991년 썬 마이크로 시스템즈 사에서 제임스 고슬링 이 고안한 프로그래밍언어이다.

 

자바의 특징

- 자바는 객체지향 프로그래밍(OOP, Object Oriented Programming) 언어이다.

- 자바의 정석 책에서는 자바 언어자체가 현실세계를 모방하고 만든언어라고한다.

객체지향 프로그래밍(OOP) 이게뭔데?

- 객체지향 프로그래밍이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고,

이것들을 하나씩 조립연결하여 전체 프로그램을 완성하는것

( 대표적인 예로 자동차를 들수 있다. 자동차에는 창문,바퀴,엔진,등등 다 객체이다

이 부품(객체)들을 각자 만들어서 합치면 자동차가 되고 그것이 굴러가는것이다.)

OOP도 이런원리랑 똑같이, 클래스(설계도)를 미리만들어두고 필요할떄

창문설계도, 바퀴설계도, 엔진 설계도 등등 미리 만들어둬서 필요할때 사용할수있다.(재사용성이 높네!)

 

이식성이 높다

- 대표적으로 웹사이트로 보면 크롬,익스플로어, 등등 많은데 프론트 개발자들은 각각의 환경에 맞게 조금씩 변화해서 코딩을 해야하는데, JAVA언어는 JVM(자바가상머신) 위에 돌아가기떄문에 OS에 독립적이다. 윈도우,맥,리눅스 등등 운영체제가 많은데 여기도 각자 달라서 조금씩변화해서 코딩해줘야할수도있는데 JAVA는 JVM위에서 돌아가기 떄문에

운영체제에 의존적이지않다!

 

메모리를 자동으로 관리한다

- 원래 컴공 출신들은 1학년떄 무조건 C언어를 배우는걸로아는데, C언어는 대표적으로 안쓰는 메모리를 개발자가 직접 정리해줘야되는데, 이게 불편했는지 자바에선 GC(가비지컬렉터)라는친구를 만들어서 사용하지않는 메모리는 저절로 지워준다.

C 언어로 개발하지않아 불편함은 모르지만 막상 핸드폰이라고치면 어떤 앱을 실행했다가 보통 안드로이드 쓰는경우는 직접적으로 끄지않고, 메인으로 돌아갈텐데 사실 그게 백그라운드로 돌아가면 배터리 소모가 심할텐데 GC 라는 친구가

어 이건 이제 안쓰네 하고 자동으로 꺼준다고 생각하면될거같다.

 

멀티 스레드 구현이 쉽다

-일단 알아야되는 개념이 프로세스와 스레드인데

일반적으로 프로세스는 우리가 사용하고 있는 프로그램이라고 생각하면된다. 스레드는 그 프로세스 안에서 프로그램이 실행하는 작업개수?단위? 라고 생각하면될거같다. 책에서 쉽게 나온 예제라고 하면 프로세스는 공장이고 스레드는 그 공장에서 일하는 일꾼이라고 비교 하더라.

 

운영체제에 따라 멀티스레드를 구현하는 방법은 다르지만,

자바는 스레드 생성 및 제어 관련된 라이브러리 API를 제공하므로 멀티 스레드를 쉽게 구현할수 있다.

(위에서 설명한것처럼 한명의 일꾼이 감당하기 힘든 작업이면 한명더 고용해서 작업을 돌린다고 생각하면 된다.)

 

* 물론 자바는 OS 안에서 동작하는것이기 때문에, OS에는 스케줄러라는 친구가 작업 순위를 지정해서 엄청 디테일하게 우선순위를 작업할순없지만 멀티스레드 정돈 API를 사용해서 제어할수있다.

 

오픈소스 라이브러리가 풍부하다

- 자바는 오픈소스 언어이므로, 자바프로그램에서 사용하는 라이브러리 또한 오픈소스 양이 방대하다.

 개발을 먼저하신 선배님들의 노력으로 우리는 하나하나 구현해야되는부분도 있지만

일반적으로 우리가 삽질하고 한것들을 편하게 쓰라고 미리만들어놓아주셔서 우린 그걸 사용법만알면 사용할수있다.

(삽이란게 없던 시절엔 분명 나무나 뭐 이런걸로 팠을텐데.. 선배님이 미리 삽이라는 좋은 무기를 만들어주셔서 우리는 삽의 사용법만 알아도 땅을팔수있다!)

 

 

 

 

단점

1) 자바는 실행을 위해 자바가상머신을 거쳐야하므로 ,다른언어에 비해 실행속도가 느리다.

   (근데 요즘은 하드웨어가 너무 좋아져서 그렇게 큰차이가 없다고한다.)

 

2) 자바는 예외처리가 잘되어 있지만, 개발자가 일일이 처리를 지정해야 한다는 불편함이 있다.

  (예외처리 까지 얘기가 나오면 체크 익셉션,언체크드 익셉션 이라는 좀 복잡한부분이 나올수 있는데

  이건나중에 토비의 스프링 책을 정리할떄 올리겠다!)

 

3) 자바는 다른언어에 비해 작성해야하는 코드의 길이가 긴편이다.

  (자바스크립트나 파이썬 같은경우의 코드 문법을보면 짧을수도 있는데 어떻게보면 편할수도 있는데

 자바는 코드를 길게쓰는대신 코드를 보면 아 여기엔 이게 오겠구나하고 이해가간다! )

'JAVA > 끄적끄적' 카테고리의 다른 글

[Java] 자바 유용한 패키지  (0) 2021.04.06
[Java] 자바 예외 처리(로그 파일에 기록)  (0) 2021.03.09