<Java> Introduce About Java

  • 스프링 공부하랴 JPA 공부하랴 등등 합리적이고 다양한 변명들로부터 항상 미루던 자바 기본서 포스팅 이제 시작합니다.

자바란?

  • 익숙하면서도 낯선 단어처럼 느껴집니다.이러한 낯섬이 해당 시리즈의 포스팅을 마무리 할 즈음에는 없어지길 바라봅니다.
  • 원론적인 이야기를 하자면, 1996년 1월에 Sun Microsystems에서 공식적으로 발표한 객체지향 프로그래밍 언어입니다.(빠른 96이니 27살 정도 먹었다고 볼 수 있겠네요)
  • Sun사에서는 자바의 전신이라는 Oak라는 언어를 임베디드용으로 개발하려고 시작하였으나, 당시 트렌드인 Web이 폭발적으로 인기가 증가하자 개발 방향을 바꿔 자바를 개발하게 되었습니다.
  • 이후 애플릿이라는 방식을 통해 웹페이지를 꾸미는 다양한 요소를 제공하였고 이는 추후에 서블릿과 JSP로 대체됩니다.
  • 다들 알다시피 자바는 운영체제의 종류에 상관없이 작동합니다. 즉, 플랫폼에 독립적이다라고 표현이 가능합니다. 사실 코딩을 처음 배우는 사람들에게는 파이썬이든 자바스크립트든 전부다 맥이든 윈도우든 잘 돌아가기 때문에 감이 안 잡히실 수도 있습니다. 하지만, JVM이라는 에뮬레이터에 대해 배우면 좀 더 구체적으로 이해가 가능합니다.

JVM

  • JVM이라는 주제 하나만으로도 포스팅을 올린적이 있을 만큼 상당히 무겁고 중요한 녀석입니다. 풀 네임은 Java Virtual Machine으로 직역하면 자바 가상 기계 정도입니다. VM이라는 단어가 어색하게 느껴지시는 분은 AWS나 GCP의 가상 컴퓨터를 떠올리셔도 좋을 것 같습니다.클라우드 서비스를 이용하면 하나의 가상 컴퓨터를 이용 할 수 있는데, 이러한 가상 컴퓨터를 자바는 기본적으로 가지고 있다라고 이해하면 좋을 것 같습니다.
  • 그러면, 왜 자바는 가상 컴퓨터를 가져야 작동이 가능할까요? 이에 대한 대답은 이미 언급이 되었습니다. 플랫폼으로부터 독립적으로 동작하기 위해서입니다.아래의 그림을 보면 JVM이 어떤 위치에 존재하는 알 수 있습니다.
  • 사실 JVM이라는 계층이 하나 더 있기 때문에 프로그래밍언어가 기계어로 변환되는 속도적인 면에서 불리한 면도 존재합니다.하지만,바이트코드를 빠르게 변환하는 JIT 컴파일러가 존재하여 최적화에 성공했습니다.

JDK 설치

  • 간략하게 JDK에 대해 설명하면, 앞서 설명한 JVM과 프로그램 실행에 필요한 각종 라이브러리들을 포괄적으로 가지고 있습니. 결론적으로 JKD를 설치하면 JVM을 설치 할수 있습니다.
  • 오라클 사이트에 회원 가입을 한 뒤, https://www.oracle.com/java/technologies/downloads/ 아래의 그림에서 8 또는 11 버전 중 본인의 운영체제 맞는 JDK를 다운 받아 주면 됩니다.
  • 이후 자바 환경변수를 설정해줘야합니다. 쉽게 말하면 설치된 JDK를 빠르게 찾아주는 경로를 지정한다고 생각하면 좋습니다.
  • 맥 OS의 경우 터미널에서 nano ~/.bash_profile를 통해 아래와 같이 본인이 설치한 JDK의 경로를 잡아줍니다.(윈도우는 구글링하면 금방 나옵니다..)
  • 이후 source ~/.bash_profile를 통해 환경변수 적용을 하고 나서, echo $PATH 명령어의 결과로 본인이 지정한 JDK의 경로가 들어가 있으면 성공한것입니다.

터미널에서 자바 실행해보기

  • 지금까지 설치한 JDK를 활용해서 자바 파일을 CLI 환경에서 실행시켜봅시다.
  • 맥은 touch 명령어, 윈도우는 파일 생성을 통해 원하는 디렉토리에 Hello.java라는 파일을 생성하고 아래의 코드를 넣어줍니다.
class Hello{
	public static void main(String[] args){
		System.out.println("Hello Java");
	}
}
  • 이후, 아래의 스크린샷 처럼 javac Hello.java 이후 클래스 파일 생성을 확인하고 java Hello를 통해서 실제로 출력이 터미널에 발생한 것을 확인 할 수 있습니다.

자바 파일 기본 규칙

  1. 자바에서 모든 코드는 반드시 클래스 안에 존재해야 한다.(위의 경우에는 class Hello의 중괄호 내에 코드가 존재해야함) 예외적으로 import, package는 클래스 밖에 작성합니다.
  2. 클래스의 첫번째 글자는 항상 대문자로 적어줍니.일단은 관습적인 이유라고 알고 있으면 됩니다.
  3. public static void main(String[] args)는 메서드라는 함수의 선언 부분이며, java 프로그램을 실행 할 때 약속된 구문이라고 생각하면 됩니다.

주석

  • 아래코드에는 위와 다르게 회색으로 음영처리된 부분이 존재합니다.
  • 이러한 부분을 우리는 주석(comment)라하며 코드 작성자 및 검토자들의 편의를 위해서 개발자가 알아듣기 쉬운 영어 또는 한국어로 코드에 대한 간략한 설명을 적어두는 기능을 주로 합니다.
  • 이러한 주석들은 실제 프로그램 실행 시 기계어로 변환 되지 않고 무시됩니다.
class Hello{
	public static void main(String[] args){
		//아래코드는 "Hello Java"를 출력하는 코드입니다.
		System.out.println("Hello Java");
	}
}