본문 바로가기
Java

[Java의 정석/1강정리] 01. 자바를 시작하기 전에

by 상후 2021. 8. 1.
728x90
반응형

자바로 개발을 하지만 자바에 대해 많이 모른다고 느껴질 때가 있습니다.

같이 공부하는 동료들 사이에 "자바의 정석 n회독을 하자" 그럼 기본기가 탄탄해지지 않을까? 라는 이야기를 주고받았습니다.

 

실제로 필요성을 느꼈고, 실행해보려 합니다.

한번 더 학습하면서 간단하게 정리하거나 생각을 기록하려고 합니다.

이 포스트는 자바의 정석을 읽으면서 공부한 내용을 한번 더 정리하며 기록하는 포스트이고,  주관적인 생각이 들어갈 수 있습니다.

 

자바 공부를 하시는 분들이라면 "자바의 정석" 도서를 추천하고, 학습 시 모르는 부분은 저자 남궁성 님께서 운영하시는 카페를 통해 학습하시면 더 좋은 성과가 있을 거라 기대합니다.

 

https://cafe.naver.com/javachobostudy

 

남궁성의 코드초보스터디(자바 java... : 네이버 카페

전문가가 지도하는 스터디카페에요. 프로그래밍언어(자바 java, C언어)를 제대로 배우고픈 분들 오세요.

cafe.naver.com

 

잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다. 댓글로 남겨주시면 확인 후 수정하겠습니다.


1-1. 자바언어의 특징

1. 운영체제에 독립적이다.

- 자바가상머신(JVM)을 통해 동작하기 때문에 가능한 것인데, 각 운영체제에 맞는 버전의 JVM을 사용하면 운영체제와 독립적으로 어디서나 사용할 수 있습니다.

 

2. 객체지향언어이다.

- 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.

 

3. 비교적 배우기 쉽다.

- 기존 언어(C++, small talk)의 장점을 취하고 불필요한 부분은 과감히 제거한 언어로, 보다 쉽게 이해할 수 있다.

 

4. 자동 메모리 관리(Garbage Collection)

- 자바 프로그램은 가비지컬렉터(Garbage Collector)가 자동으로 메모리를 관리해 주는데, 때문에 개발자가 메모리 관리를 따로 안 해줘도 된다. 자동으로 메모리를 관리한다는 것이 다소 비효율적인 면도 있지만, 보다 개발에 집중할 수 있도록 도와준다.

오늘날의 하드웨어 또는 PC의 성능이 좋아짐에 따라 비효율적인 면은 사라졌다고 생각합니다.
또한 신기술의 도입으로 JVM의 기능이 향상됨으로써 속도 문제가 상당히 개선되었다고 합니다.

 

5. 네트워크와 분산처리를 지원한다.

- 풍부하고 다양한 네트워크 프로그래밍 라이브러리를 통해 비교적 짧은 시간에 네트워크 관련 개발을 할 수 있도록 지원한다.

 

6. 멀티쓰레드를 지원한다.

- 일반적으로 멀티쓰레드의 지원은 사용되는 운영체제에 따라 구현 방법도 상이하며, 처리 방식도 다르다. 그러나 자바에서는 시스템과는 관계없이 구현이 가능하고, 관련된 라이브러리가 제공되므로 구현이 쉽다. 

 

7. 동적 로딩(Dynamic Loading)을 지원한다.

- 자바는 실행 시 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스가 변경되어도 전체를 다시 컴파일하지 않아도 된다.


1-2. JVM(Java Virtual machine)

JVM(Java Virtual machine)은 "자바를 실행하기 위한 가상 컴퓨터"가 가장 와닿는 설명이었습니다.

자바 프로그램은 OS에 종속적이지 않지만, JVM은 OS에 종속적이기 때문에 해당 OS에 맞는 JVM이 필요합니다.

그래서 일반적으로 많이 사용되는 주요 OS용 JVM은 제공하고 있습니다.

이로써 자바의 장점 중인 하나인 "한 번 작성하면 어디서든 실행된다"가 가능하게 되는 것입니다.


1-3. 자바 프로그램 작성 및 실행

1. Hello.java 작성하기
2. javac.exe 컴파일(자바 컴파일러) -> Hello.class 파일 생성
3. java.exe 실행(자바 인터프리터)
     3-1. 실행에 필요한 클래스(*.class파일)를 로드
     3-2. 클래스 파일 검사(파일 형식, 악성코드 체크)
     3-3. 클래스에서 main(String[] args) 호출 
4. 작성한 코드 내용 실행

 


1-4. 에러가 발생한다면..

1. 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴본다. 이상이 없다면 위아래 줄도 함께 살펴본다.
2. 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인한다.
3. 의심이 가는 부분을 주석 처리하거나 따로 떼어내서 테스트한다.

 

중요하다고 생각한 부분이다. 로그나 에러 메시지 속에 정답이 있는 경우가 정말 많기 때문이다.

728x90
반응형

댓글