컴퓨터(하드웨어) – 메인프레임, PC, 태블릿, 스마트폰, 원칩컴퓨터 앱(소프트웨어)
하드웨어-중앙 처리 장치-기억 장치-RAM, HDD-입출력 장치-마우스, 프린터 소프트웨어-시스템 소프트웨어-운영 시스템, 컴파일러-응용 소프트웨어-워드 프로세서, 스프레드 시트 프로그래밍 언어-프로그램 작성 언어-기계어-0,1의 이진 숫자로 구성된 언어-컴퓨터의 CPU는 기계어만 이해하고 처리 가능.어셈블리어-기계어 명령을 ADD, SUB, MOVE등의 표현하기 쉬운 상징적인 단어인 니모닉 기호로 일대일 대응시킨 단어.-고급 언어-사람이 이해하기 쉽게 복잡한 작업, 자료 구조, 알고리즘을 표현하기 위해서 고안된 언어-Pascal, Basic, C/C++, Java, C#-순서 지향 언어와 객체 지향 언어 컴파일러(Compiler)-소스:프로그래밍 언어로 작성된 텍스트 파일-컴파일:소스 파일을 컴퓨터가 이해할 수 있는 기계어는 과정.-소스 파일 확장자-컴파일.java->. class-C:. c->. obj->. exe-C++:. cpp->. obi->. exe
자바의 태동-1991년 그린 프로젝트-선마이크로 시스템스의 제임스·고스링그에 의해서 개시(Stanford university Network)-목적-플랫폼 호환성 문제 해결-기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임 등 플랫폼 간에 호환성 없다.-네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두-메모리 사용량이 적은 다양한 플랫폼을 가니 카누 가전 제품에 적용.-가전 제품:소량의 메모리를 가진 제어 장치-내장형 시스템 요구를 충족 WORA(Write Once Run Anywhere)-한번 작성된 코드는 모든 플랫폼에서 바로 실행-C/C+등 기존 언어가 가진 플랫폼 종속성 극복-OS, 하드웨어에 관계 없이 자바 프로그램이 같이 실행-네트워크에 접속된 어떤 클라이언트에서도 실행-Web브라우저, 분산 환경 지원 WORA을 가능하게 하는 자바의 특징-바이트 코드(bytecode)-자바 소스를 컴파일한 목적 코드-CPU에 종속적이 아닌 중립적인 코드-JVM에 의해서 해석되고 실행된다.-JVM(Java Virtual Machine)-자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)
C/C+프로그램 개발-복수의 소스(. c)파일로 나누어 개발 링크를 통해서 실행에 필요한 모든 코드를 1개의 실행 파일(. exe)에 저장·실행-실행 파일(exe)는 모두 메모리에 올리지 않으면 실행, 메모리가 적은 경우에는 헌팅 자바의 개발 및 실행 환경-자바 프로그램 개발-복수의 소스(. java)으로 나눠서 개발-바이트 코드(. class)을 1개의 실행 파일(exe)에 링크 과정 없이 실행.-main()메소드를 갖는 클래스에서 기동.-자바 가상 기계는 필요한 시절 반
Java와 C/C+ 실행 환경의 차이
Java와 C/C+ 실행 환경의 차이
디버깅(중요)
Java의 특성 플랫폼 독립성-Java프로그램은 플랫폼에 관계 없이 어디서나 실행 객체 지향-상속성, 다형성, 캡슐화 클래스로 캡슐화 클래스 내에 모든 변수(필드)함수(방법)구현해야 한다.-클래스 내에서 새로운 반(내부급)작성 가능 소스(. java), 반(. class)파일-하나의 소스 파일에 여러 반을 작성 가능-public클래스는 하나만 가능-소스 파일의 이름과 public으로 선언된 클래스 이름은 같지 않으면 안 된다.-컴파일된 클래스 파일(. class)에는 반은 하나만 존재-다수의 학급을 맡은 자바 소스(. java)를 컴파일하면 반별로 별도의 클래스 파일(. class)생성 실행 코드 배포-실행 코드:1개의 class파일 또는 c수의 class파일로 구성-여러 폴더에 걸쳐서 다수의 클래스 파일에서 구성된 경우-jar파일 형식으로 배포 가능-main()메소드-자바 애플리케이션의 실행은 main()메소드부터 시작-1개의 클래스 파일에 1개 이상의 main()메소드가 있을 수 없다.-각 클래스 파일이 main()메소드를 포함하는 것은 관계 없다.패키지-관련하는 복수의 반을 패키지로 통합 관리-패키지는 폴더 개념 다중 스레드-자바는 운영 체계의 도움 없이 자체적으로 멀티 스레드 지원이 베, 컬렉션-자바는 어플리케이션에서 메모리 반납 기능 없이 메모리 할당 기능만.실시간 애플리케이션에는 부적합-자바 응용 프로그램은 실행 도중 예측할 수 없는 시점에서 나방 베, 컬렉션 실행-일정 시간 내에 반드시 실행 결과를 내야 하는 실시간 시스템에는 부적합 자바 프로그램은 안전-타입 검사가 우 엄격하-포인터의 개념이 없다.프로그램 작성이 쉽-포인터 개념이 없는 부담 적-다양하고 강력한 라이브러리가 많이 실행 속도를 개선하기 위해서 JIT컴파일러 사용-자바의 늦게 실행 요인:인터프리터 방식으로 바이트 코드 실행-JIT(just in time)공 파일링 기법에 개선-실행 도중 바이트 코드를 해당 CPU의 기계어 코드로 컴파일, 해당 CPU가 기계어를 실행.