01.JAVA의 시작

PearLine_Zero·2023년 10월 21일

Java

목록 보기
1/7
post-thumbnail

1.1 컴퓨터와 소프트웨어

컴퓨터는 요리순서로 재료를 주면, 요리를 만들어내는 만능 요리 기계와 유사하게 어떤 소프트웨어 혹은 프로그램도 처리할 수 있는 만능 기계.
프로그래머가 소프트웨어를 개발하는 것은 요리 설계사가 요리를 개발하여 요리 순서를 작성하는 것과 같음.

✅ 프로그래밍 언어

프로그래밍언어는 컴퓨터가 실행할 프로그램을 작성하기 위한 언어.
컴퓨터의 CPU는 이진수(binary code)인 0과 1밖에 이해를 못하며 이진수 명령어들로 구성된 언어를 기계어라고 함.
사람이 기계어로 프로그램작성이 어려움 그래서 각 기계어의 각 명령어 ADD, SUB, MOVE 등 가급적 표현하고 쉬운 상징적인 니모닉 기호(mnemonic symbol)로 일대어를 대응시킨 어셈블리어가 만들어졌으나, 어셈블리어도 다루기 힘든 저급언어여서 효율적으로 표현이 가능한 pascal, Basic , c / c++ , Java 고급언어가 생김.
고급언어는 절차 지향 언어 , 객체 지향 언어로 나누어짐.

✅ 프로그램밍과 컴파일

프로그래밍 언어로 소스 파일을 작성으로 시작.
소스 프로그램은 텍스프 파일이라서 텍스트 편집기로도 작성이 가능.
소스 프로그램을 기계어로 변환하는 컴파일 과정이 필요.
어셈블리어 파일 확장자 .asm C언어 .c C++은 .cpp 비주얼 베이직은 .vb 자바는 .java이며 자바프로그램의 경우 컴파일된 파일의 확장자는 .class 임.

1.2 자바의 출현과 WORA

✅ 자바의 태동

가전제품의 소프트웨어 작성에 적합한 프로그래밍 언어를 개발.
기존 언어로 작성된 프로그램은 컴퓨터 플랫폼 간에 호환성이 없어 프로그램을 재작성해야 하는 단점이 있었음.
이에 선마이크로시스템즈는 플랫폼 독립적이며 메모리 사용량이 적은 언어를 개발하며 처음에는 이름을 오크 라고 지음 그러나 상표가 등록이 이미 되어 있어서 95년도에 자바라는 이름으로 발표하였으며 2009년에 데이터베이스로 유명한 오라클에서 인수함.

✅ 자바의 플랫폼 독립성, WORA

자바 가상 기계만 있으면 어떤 컴퓨터에서든 동일하게 실행됨. 이를 WORA라고 부름.
자바는 플랫폼 독립적 특징을 보여줌. 그리고 한 번 작성된 자바 프로그램은 수정 없이 실행 가능.

✅ 자바 가상 기계와 자바 실행 환경

  • 바이크 코드
    • 자바 가상 기계에 의해 실행되는 바이너리 코드로 하드웨어로 만들어 지기도 함.
    • CPU에 의해 직접 실행되지 않고, 인터프리터 방식으로 실행되며 자바 가상 기계는 플랫폼에 적합하게 서로 다르게 구현되므로 플랫폼 종속적임.

1.3 개발 도구와 자바 플랫폼

✅ JDK와 JRE

JDK 는 자바 개발자를 위한 상업용 소프트웨어로, 자바 컴파일러 등의 개발 도구와 JRE로 구성됨.
JRE는 자바 API와 자바 가상 기계를 포함함.
bin 디렉터리에 들어 있는 주요한 개발 소프트웨어

  • javac : 바이트 코드로 변환
  • java : 자바 프로그램 실행기.
  • javadoc : HTML 형식의 API.
  • jar : 자바 아카이브 파일(.jar)
  • jmod : 자바의 모듈파일(.jmod) 모듈 파일의 내용 출력.
  • jlink : JRE 생성
  • jdb : 오류를 찾는 데 사용하는 디버거
  • javap : 바이크 코드를 소스와 함께 보여주는 디어셈블러

✅ 자바의 배포판

  • Java SE : 자바 표준 배포판
  • Java ME : 모바일용 배포판
  • Java EE : 기업용 배포판

✅ JAVA 9 부터 시작된 모듈 프로그래밍

2017년에 자바 9가 새로나왔는데 자바 플랫폼에 큰 변화가 이루어졌는데 바로 모듈화.
Java9 개발자들이 호출하는 Java SE의 모든 클래스들을 모듈들로 재설계하고 재정리함. JDK를 설치하면 jmods 디렉터리 내에 담긴 모듈을 볼 수 있음.
모듈화의 대표적인 목적 은 세밀한 모듈화 그리고 필요 없는 모듈 배제하여 작은 크기로 배포할 수 있도록 함.

1.4 자바 프로그램 개발 과정

✅ 자바 소스 편집

클래스 이름과 자바 소스 파일 이름이 같아야 함. 파일 확장자는 .java

1.5 자바의 특징

  • 플랫폼 독립성
  • 객체 지향
  • 클래스 캡슐화 : 변수나 메소드는 반드시 클래스 내에 구현
  • 소스와 클래스 파일 : 자바소스가 컴파일된 클래스는 .class 하나의 자바 소스 파일에 여러 개의 클래스를 작성한 경우, 컴파일하면 클래스마다 별도의 클래스 파일이 생성됨.
  • 실행 코드 배포 : 한 개의 클래스 파일 또는 다수의 클래스 파일로 구성이 되며 jar 파일 형태로 압축하여 배포 및 실행이 가능함. 그리고 자바의 실행은 main 메소드로 시작하며 두개 이상은 있을 수 없음. 그러나 각 클래스 파일이 main() 메소드를 가지는 것은 상관없음.
  • 패키지 : 서로 관련 있는 클래스는 패키지로 묶어 관리하며 폴더개념과 같음.
  • 멀티스레드
  • 가비지 컬렉션 : 메모리를 반환하는 기능은 없음 그리고 사용되지 않는 메모리는 자바 가상 기계의 가비지 컬렉션기능으로 인해 자동 회수됨.
  • 실시간 응용 시스템에 부적합 : 타입 체크가 매우 엄격함 그리고 포인터개념이 없음.
  • 프로그램 작성이 쉬움 : 포인터 개념이 없음 그리고 다양한 라이브러리를 지원
  • 실행 속도를 개선하기 위해 JIT 컴파일러가 사용됨
profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글