Java

자바 시작하기

lleesla 2024. 6. 7. 20:04

1.1 프로그래밍 언어란?


  • 기계어는 0과 1로 이루어진 이진 코드이다.
  • 프로그래밍 언어는 고급 언어와 저급 언어로 구분된다.
    • 고급 언어고급 언어로 작성된 소스는 컴퓨터가 바로 이해할 수 없기 때문에 컴파일(compile) 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 변환한 후 컴퓨터가 사용하게 된다.
    • 컴퓨터와 대화할 수 있도록 만든 언어 중에서 사람이 쉽게 이해할 수 있는 언어
    • 저급 언어대표적으로 어셈블리어가 있다.
    • 저급 언어는 사람이 쉽게 이해할 수 없기 때문에 배우기 까다롭다.
    • 기계어에 가까운 언어
  • 일반적으로 프로그래밍 언어라고 하면 고급 언어를 말하는데, 대표적인 프로그래밍 언어인 C, C++, 자바(Java)는 모두 고급 언어에 속한다.
  • 이 언어들로 작성된 내용을 소스라고 부른다.
  • 소스는 컴파일러라는 소프트웨어에 의해 기계어로 변환된 후 컴퓨터에서 실행할 수 있게 된다.

1.2 자바란?


1.2.1 자바 소개

초기의 자바는 가전 제품에 탑재할 프로그래밍 언어로 개발되었으나 지금은 스마트폰을 비롯해서 각종 장비와 데스크톱에서 실행되는 애플리케이션, 그리고 엔터프라이즈 기업 환경에서 실행되는 서버 애플리케이션을 개발하는 중추적인 언어가 되었다.

1.2.2 자바의 특징

이식성이 높은 언어이다.

  • 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
  • 자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영체제에서 실행 가능 하다.

객체 지향 언어이다.

  • 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 객체 지향 프로그래밍(OOP: Object Oriented Programming)이라고 한다.
  • 이때 사용되는 언어를 객체 지향 언어라고 한다.
  • 자바는 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.

함수적 스타일 코딩을 지원한다.

  • 함수적 프로그래밍이 부각되고 있는데, 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하기 때문이다.
  • 자바는 함수적 프로그래밍을 위해 람다식(Lambda Expressions)을 자바 8부터 지원한다.
  • 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.

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

  • 자바는 개발자가 직접 메모리에 접근할수 없도록 설계되었으며, 메모리는 자바가 직접 관리한다.
  • 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다.
  • 따라서 개발자는 메모리 관리의 수고를 덜고, 핵심 기능 코드 작성에 집중할 수 있다.

다양한 애플리케이션을 개발할 수 있다.

  • 단순한 콘솔 프로그램부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션 그리고 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다.
  • Java SE(Standard Edition) - 기본 에디션
  • Java SE는 자바 프로그램들이 공통적으로 사용하는 자바 가상 기계(JVM)를 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다.
  • 클라이언트와 서버 프로그램에 상관없이 자바 프로그램을 개발하고 실행하기 위해서는 반드시 Java SE 구현체인 자바 개발 키트(JDK)를 설치해야 한다.
  • Java EE (Enterprise Edition) - 서버용 애플리케이션 개발 에디션
  • Java EE는 분산 환경(네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다.
  • 서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트인 EJB 그리고 XML 웹 서비스 등이 있다.

멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.

  • 하나의 프로그램이 동시에 여러 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다.
  • 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하기 때문에 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.

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

  • 자바 애플리케이션은 여러 개의 객체가 서로 연결되어 실행되는데, 이 객체들은 클래스로부터 생성 된다.
  • 자바는 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.
  • 그렇기 때문에 유지보수를 쉽고 빠르게 진행할 수 있다.

막강한 오픈소스 라이브러리가 풍부하다.

  • 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 많다.
  • 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성이 높은 애플리케이션을 쉽게 개발할 수 있다.

1.2.3 자바 가상 기계(JVM)

  • 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이다. 이것을 해석하고 실행할 수 있는 가상의 운영체제인 자바 가상 기계(JVM: Java Virtual Machine)이다.
  • JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다.

1.5 주석과 실행문

1.5.1 주석 사용하기

  • 주석은 프로그램 실행과 상관없이 코드에 설명을 붙인 것을 말한다.
  • 컴파일 과정에서 주석은 무시되고 실행문만 바이트 코드로 번역된다.
  • 따라서 주석을 많이 작성한다고 프로그램의 크기가 커지는 것은 아니므로 설명이 필요한 코드에 주석을 다는 것이 좋다.
  • 주석의 내용에는 작성자, 작성일과 시간, 프로그램의 버전과 변경 이력 등의 정보, 주요 코드에 대한 설명 등이 포함된다.

주석문의 종류

주석 기호 설명입

// //부터 라인 끝까지 주석으로 처리한다. (행 주석)
/* ~ */ /*와 */ 사이에 있는 모든 범위를 주석으로 처리한다. (범위주석)
  • 주석문은 문자열(””)을 제외한 코드 내 어디서든 작성이 가능하다.

1.5.2 실행문과 세미콜론(;)

  • 실행문은 변수 선언, 값 저장, 메소드 호출에 해당하는 코드를 말한다.
  • 실행문은 마지막에 반드시 세미콜론을 붙여 실행문이 끝났음을 표시해주어야 한다.
  • 컴파일러는 세미콜론이 나올 때까지 실행문이 계속해서 연결된 것으로 보기 때문에 여러줄에 걸쳐 있어도 되고, 한 줄에 여러 개의 실행문이 있어도 된다.