320 likes | 542 Views
프로그래밍 언어. 전산정보처리학과 중위 ( 진 ) 정세화. 교수사관 6 기 임관. 참모 총장상 수상. 민간 학력. 아주대학교 정보 및 컴퓨터 공학부 졸업 ( 학사 ) 아주대학교 BK21 정보통신전문대학원 정보통신공학과 졸업 ( 석사 ). 제 2 사업팀. 기술 연구소. 국제 공인자격증. Cisco. CCNA(Cisco Certified Network Associate] CCNP[Cisco Certified Network Professional)
E N D
프로그래밍 언어 전산정보처리학과 중위(진) 정세화
민간 학력 아주대학교 정보 및 컴퓨터 공학부 졸업(학사) 아주대학교 BK21정보통신전문대학원 정보통신공학과 졸업(석사)
국제 공인자격증 • Cisco CCNA(Cisco Certified Network Associate] CCNP[Cisco Certified Network Professional) CSQ(Cisco Firewall Specialist)
국제 공인자격증 국제 공인자격증 • Cisco(네트워크 관련 자격증) • Oracle(데이터 베이스 관련 자격증) • SUN Microsystems(자바 프로그래밍 자격증) • Oracle OCP 8i(Oracle Certified Professional 8i) OCP 9i Upgrade CCNA(Cisco Certified Network Associate] CCNP[Cisco Certified Network Professional) CSQ(Cisco Firewall Specialist) OCP 8i(Oracle Certified Professional 8i) OCP 9i Upgrade SCJP(Sun Certified Java Programmer)
국제 공인자격증 • SUN Microsystems SCJP(Sun Certified Java Programmer)
자바 프로그래밍 입문 Java Programming for Beginners 전산정보처리학과 중위(진) 정세화
chapter 01. 자바 언어의 소개
학습목표 • 자바 언어의 특징 • 자바 프로그램의 종류 • 자바 언어와 다른 언어의 차이점 • 자바 플랫폼과 자바 가상 머신 이해 • 객체지향 언어로 자바 언어가 적합한 이유 이해
자바 소개 • 자바 언어 • C, 포트란, 스몰토크, 펄, C++과 같은 고급 언어 • 3세대 언어 • C 언어와 문법적으로 유사하나 객체지향 언어임 • 다양한 객체지향 언어의 특성을 조합해서 개발 • 미국 선 마이크로시스템즈 사에서 개발 • 배우기 쉽고, 빠른 개발이 가능한 언어 • 가비지 컬렉션으로 malloc(), free()가 없음
자바 프로그램의 형태 – Applet`과 `Application • 애플릿 (Applet) • 웹 브라우저에 동작하는 프로그램 • 프로그램 코드는 웹 서버 저장실행은 PC에서 웹 서버로 부터 HTML 문서와 함께 전달 • HTML문서에 의해서 자동 실행 • 악의적인 코드로 부터 보안 장치 있음 • 애플리케이션 (Application) • 일반 응용 프로그램과 유사하게 동작 • 프로그램 코드가 저장되어 있는 PC에서 실행 • 모든 자원을 사용할 수 있으므로 실행 당사자가 유의함 * 자바 프로그램은 일반적으로 JAR 압축 파일 형태로 제공
애플릿과 애플리케이션의 코드 작성 (참고) • 애플릿 • java.awt.applet.Applet 클래스로 부터 확장 • init(), start(), paint(), stop(), destroy()등의 메소드를 재정의 • 애플리케이션 • private으로 정의된 클래스가 아니어야 함 • public static void main() 메소드를 구현 • 지금은 잘 이해가 되지 않아도 상관없음
자바 플랫폼 • 플랫폼 • 서로 다른 하드웨어나 운영체제에서 동일한 프로그램이 거의 유사하게 동작할 수 있게 해주는 환경 • 자바 플랫폼 • 자바 언어 • 자바 개발 도구 (JDK) • 자바 실행 환경 (JRE) 개발자 지원 사용자 지원 JDK (Java Development Kit) JRE (Java Runtime Environment) • JRE는 일반 사용자를 위하여 JDK에서 컴파일러와 디버거를 삭제하여 단순화 시킨 것
자바 플랫폼 특징 • 자바 가상 머신 • 다양한 운영체제에서 동작하기 위한 방식 채택 • 자바 컴파일러가 생성한 바이트 코드를 실행 • 컴퓨터 처리 수준에 맞는 구별 • J2ME (Micro Edition) • 처리 수준이 상대적으로 낮은 휴대폰, 웹페드, 디지털 TV 대상 • J2SE (Standard Edition) • 일반 데스크탑 PC 대상 • J2EE (Enterprise Edition) • 처리 수준이 상대적으로 높은 서버/워크스테이션 급 • 이번 강의는 J2SE에 맞춰져 있으며, 휴대폰에서는 J2ME를 많이 사용함 • 단, 국내에서는 자바 언어와 C 언어를 함께 지원하는 WIPI를 적용하기 시작함
플랫폼 이란? (참조) • 윈도우 플랫폼 • 마이크로소프트 사에서 나온 운영체제 통칭 • Windows95/98 • WindowsNT/2000 • WindowsXP/2003 • 특정 회사의 제품 군으로써의 플래폼 • 리눅스 플랫폼 • Linux 핵심 코드를 바탕으로 한 제품들 • RedHat 리눅스, Hancom 리눅스, Debian 리눅스 • 임베디드 리눅스, 몬타비스타 리눅스 (J2ME 정도에 해당) • 핵심 코드를 공유하는 의미의 플랫폼
바이트 코드와 네이티브 코드 • 바이트 코드 • CPU나 운영체제와 상관없이 동일한 형태의 코드 • 자바 컴파일러에 의해서 생성 • 자바 가상 머신을 통하여 다양한 환경에서 실행 • 예) CA FE BA BE 00 03 00 2D 00 3E 08 00 3B • 네이티브 코드 • CPU나 운영체제에 따라서 상이한 형태의 코드 • 각종 프로그래밍 컴파일러에 의해서 생성 • 해당 CPU나 운영체제에서만 실행 가능 • 예) 4D 5A 90 00 03 00 00 00 04 00 00 00 FF 00 • CA FE BA BE는 자바 바이트 코드임을 알려주는 매직 코드임.
자바 가상 머신 • 자바 코드의 실행 • 자바 프로그래밍 • 자바 컴파일러를 통해서 바이트 코드 생성 • 자바 가상 머신을 통해서 바이트 코드 수행 • 자바 가상 머신 • 추상적인 머신 - 실제 머신이 아님 • 명령어 집합, 레지스터 집합, 스택, 힙, 메소드 영역 구성 • 실제 네이티브 코드로 작성되어 있음 • C언어, 자바 언어, 어셈블리어로 작성 • 자바 언어가 포함된 것은 일부 기본 패키지의 클래스가 C언어와 연결되어 있음을 의미
객체지향 언어와 자바 • 객체지향 언어 • 1990년대 매우 중요한 이슈 • 1960년대 시뮬라 (Simula) 언어가 최초 • GUI 환경을 구현하는데 중요한 역할 제공 • 객체는 데이터와 메소드로 구성 • 객체지향 언어의 특성 • 단순함 – 프로그램을 쉽게 이해할 수 있음 • 재사용성 – 만들어 놓은 코드를 쉽게 재사용함 • 신속성 – 프로그램을 빠르게 제작함 자바 언어는 객체지향 특성을 잘 만족하는 언어임 • 객체지향 언어의 특징 중 비용 절감이 가장 중요함
자바 언어의 특징[1] • 배우기 쉽고 가르치기 쉬운 언어 • 내용은 작지만 범위는 넓다 • 인터프리트 방식으로 속도는 늦지만, 코드는 안정적이다 • 가비지 컬렉터로 메모리 관리가 용이 • 다양한 환경에서 동작이 가능함
자바 언어의 특징[2] • 좋은 객체지향 언어 • 자바 프로그램은 기본적으로 클래스 집합 • C언어의 라이브러리보다 진보된 개념의 패키지 지원 • 클래스 상속, 캡슐화, 다형성 지원
자바 언어의 특징[3] • 견고한 프로그래밍 언어 • 엄격한 문법적인 오류를 컴파일 시 감지 • 예외 처리 지원으로 런타임 오류 감소 • 가비지 컬렉터를 통한 메모리 접근 오류 금지 • 견고하다는 것은 영어로 robust하다고 한다. 이는 오류가 그만큼 줄어들었음을 의미한다
자바 언어의 특징[4] • 신속하고 이식성이 있는 언어 • 실행 코드 수준에서 호환성이 존재 (바이트 코드) • 자바 가상 머신의 이식성도 높은 편임 (IEEE754지원)
자바 언어의 특징[5] • 쓰레드 지원 언어 • 대부분의 언어는 쓰레드를 운영체제의 기능으로 사용 • 자바는 자체 쓰레드가 있기 때문에 쓰레드가 없는 환경에서도 쓰레드 기능을 제공해야 함 • green thread • 자바 가상 머신 스스로 쓰레드 관리 • native thread • 운영체제에서 제공하는 쓰레드 기능을 이용
요약 • 자바 프로그래밍 언어 • 자바 플랫폼 • 자바 가상 머신 • 객체지향 언어 • 자바 언어의 특징