걸어서 개발속으로

1장.자바 시작 본문

Programming/Java

1장.자바 시작

티샤 2022. 2. 4. 14:15
  • 프로그래밍 언어 : 컴퓨터가 실행할 프로그램을 작성하는 언어, 0과 1밖에 이해 못함.
  • 기계어 : 이진수(binary code, 0과 1로만 이루어짐) 명령어들로 구성된 언어
  • 어셈블리어 : 기계어의 각 명령(ADD,SUB,MOVD...)을 쉽고 상징적인 니모닉 기호(mnemonic symbol)로 일대일 대응 시킴.
  • 고급언어 : 절차지향언어(C) > 객체지향언어(C++,자바,C#)
    • C에서 Jaca Script가 나온거구나...? 
    • C > C++ > Java > JSP와 C#
    • C > Perl > PHP

 

(!) C에서 파생된 언어들이 많아서 프로그래밍 시작할때 무조건 C부터 공부하는거구나?

  • 컴파일 : 고급언어로 작성된 것을 기계어 코드로 변환하는 과정
    • 자바는 .clcass 파일로 컴파일 되며,  클래스 파일은 자바 가상기계에 의해 실행됨!
  • WORA(Write Once Run Anywhere)
    • 운영체제나 하드웨어 상관없이 자바가상기계(JVM)이 있으면 어디서나 자바로 작성된 프로그램에 동일한 실행환경을 제공함! (플랫폼 종속성 극복)
  • 자바 가상기계와 바이트코드 - 자바의 플랫폼독립성을 가능하게 하는 2가지
    • 바이트코드 : 자바가상기계에서만 실행되는 기계어. 어떤 cpu와도 관계없는 바이너리 코드.
    • 자바가상기계가 인터프리터 방식으로 실행시킴
  • 자바의 실행환경
    • C/C++ 프로그램  : 여러개의 소스파일을 나누어작성 > 소스프로그램을 컴파일 하여 목적파일(.obj) 생성 > 링크를 통해 obj를 하나의 실행파일(.exe)로 만듬
      • .exe 실행파일에는 실행에 필요한 모든코드가 다 들어있음. but 실행파일이 너무 크면 처음부터 실행도 못함
    • 자바프로그램 : 여러소스파일(.java)로 작성 > 각 소스파일을 컴파일하여 클래스 파일(.class) 생성 > 필요한 클래스파일만 실행 가능
      • 링크 과정이 없음. 필요한것만 부르니 적은 량 메모리를 가진 컴퓨터에서도 실행 가능함.
  • JDK와 JDE
    • JDK(Java Development Kit) : 자바 개발자를 위한 상업용 소프트웨어. 개발도구 + JRE
    • JRE(Java Runtime Environment) : 자바 프로그램이 실행될 때 필요한 소프트웨어. 자바 API + 자바가상기계
  • 모듈프로그래밍
    • 모듈 : 자바 패키지들,이미지,XML 파일등의 자원들을 묶은 단위. 필요한 모듈을 연결하는 방식으로 구성됨.
    • 세밀한 모듈화로 작은크기로 배포할 수 있도록 함. 
  • 자바 API (Application Programing Interface)
    • 개발자들이 사용하도록 미리 만들어놓은 유용한 자바 클래스 집합
  • 자바 프로그램 실행과정
    • 소스편집
      • public class Hello{ //이름이 Hello인 클래스 선언
        	public static void main(String[] args) { //main 메소드 선언.  프로그램실행은 반드시 main()메소드부터 시작함
        		int n=2022; //지역변수 n 선언. 2022로 초기화
        		System.out.println("Hello"+n); // Hello 2022 출력, System.out.println()은 자바 API
        	}
        }
    • 컴파일 : Hello2022.java 컴파일 > 바이트코드가 Hello2022.class에 저장됨
    • 실행 : JDK로 java Hello2022.class 실행
  • 사용 IDE는 Eclipse.
    • 프로젝트생성
      • [File]-[New]-[Java Project]
      • Project Name에 프로젝트명 입력 / Create moudle-info.java file 체크 안함
        (※Create module-info.java는 모듈프로그래밍을 안한다는 의미. 프로젝트가 크지 않아서 체크 안한거 아닐까?)
      • 여기서 [Finish]
    • 클래스생성
      • 생성된 프로젝트 오른쪽 버튼 > [New] - [Class] 
      • Name : 클래스 이름입력 / public static void main(String[] args) 체크 하여 main() 메소드 생성
        (기본적으로 프로그램 실행은 main()메소드부터 시작함!) 
      • 그러면 이런 화면이 뜬다..
    • 소스편집, 컴파일 및 실행
      • 소스를 입력하고 Run 버튼을 누르거나 [Run] -> [Run] 선택.
      • 그 결과값은 아래의 콘솔윈도우에서 나온다.
  • 자바의 특징
    • 플랫폼독립성 : 독립적 바이트 코드로 컴파일. 자바가상기계만 있으면 실행가능.
    • 객체지향 : 캡슐화,상속,다형성 지원. 인간의 사고와 가까운 표현
    • 소스와 클래스파일 : 클래스 파일(.class)엔 반드시 하나의 자바 클래스만 들어감.
      • 4개의 클래스 파일 생성
    • 실행코드 배포 : 한개의 클래스파일 or 다수의 클래스 파일  > jar파일 형태로 압축하여 배포,실행. 
    • 패키지 : 관련있는 클래스는 패키지로 묶음. (패키지 : 폴더의 개념)
    • 멀티스레드 : 하나의 자바 프로그램이 다수의 작엉ㅂ을 처리하도록 다수의 스레드가 동시에 실행됨
      (스레드 : 프로세스 내에서 실행되는 흐름의 단위)
    • 가비지컬렉션 : 프로그램 내 사용되지 않는 메모리(가비지)는 자동회수됨
    • 실시간응용시스템에 부적합 :  예측불가시점에 가비지 컬렉션 실행 > 일정시간내에 반드시 실행결과 내는 실시간 시스템에는 자바 적합 x 
      (아 그래서 관제프로그램이나 보안 프로그램은 자바로 거의 안쓰는건가보네..?)
    • 안전
    • 프로그램 작성이 쉬움. (포인터 개념이 없으므로!) (그치만 나도 포인터를 잘 모른다 ㅠㅠ)
    • 실행속도 개선을 위한 JIT(Just In Time) 컴파일러 사용.
Comments