1주 실습강의 Introduction 인공지능연구실
Java의 장점 Scalability Security Universality Modularity Java란 프로그램언어는 enterprise 급 기업의 web시스템에서부터 작은 핸드폰에 이르기까지 어디든지 사용할 수 있다. Security Java는 보안능력이 뛰어나다. 예를 들어 네트워크를 통해 내 PC로 download된Java로 개발된 프로그램은 일반적으로 그 능력이 제한된다. Universality Java로 개발된 프로그램은 OS에 구애를 받지 않고, OS를 바꿔서 프로그램을 이식시킬 때, 그 OS에 해당하는 JDK만 있으면 된다. Modularity Java를 이용해 재사용 가능한 object를 만들 수 있다.
Java의 특징(1) 사용이 쉽다. C 언어의 포인터처럼 메모리를 직접 access할 수 없다. Java에는 C 언어가 가지고 있는 포인터 기능은 없다. 사실 C 언어에서 가장 어려운 부분중의 하나가 포인터인데, Java에서는 포인터를 사용하지 않아도 된다. 객체지향적이다. Java는 객체지향적인 언어임으로 기존의 절차적 언어에 비해 module화 쉽다. 그러나 객체지향적언어에 익숙하지 않다면, 오히려 이 장점은 Java를 더욱 배우기 힘들게 만드는 장애중의 하나가 된다. 능률적이고 분명한 코드를 사용할 수 있게 해준다.
Java의 특징(1) 절차적 프로그래밍(C)과 객체지향 프로그래밍(Java) 절차적 프로그래밍 : 프로그램 내에서 일어나는 모든 변화와 동작, 사건 등을 프로그래머가 직접 기술 객체지향 프로그래밍 : 객체에게 자신이 원하는 일을 해달라는 메시지를 전달.
Java의 특징(2) Java는 interpreted environment를 제공한다. 기존의 compile/link/load방식의 언어에 비해 source를 compile만 하면 최종 수행코드가 생성됨으로 개발시간을 단축할 수 있다. class 파일(byte code)은 exe처럼 실행 가능한 파일이 아님. -> JVM필요함.
Java의 특징(3) Java Virtual Machine (JVM) ‘Write once, Run Anywhere’ class파일은 그 자체가 실행파일이 아니다. 따라서 그냥 수행될 수 없으며, 이 class파일을 읽어서 해석한 후, 실행해 줄 무언가가 필요한데, 그것이 바로 JVM이다. ‘Write once, Run Anywhere’ OS에 맞는 JVM만 설치만 해주면 어떤 OS라도 동일한 byte code가 쓰일 수 있다. Platform Independence
Java의 특징(4) Garbage Collection 프로그램을 개발할 때 프로그래머는 자신이 사용한 메모리를 system에 반납해야 할 의무가 있다. 하지만, 프로그래머가 코드상 JVM이 알아서 더 이상 사용되지 않는 메모리를 check해서 system에 반납해 준다. -> 메모리 누수 방지 공고한 security Java는 loading된 module에 대한 security check를 함으로 기존의 언어에 비해 공고한 security를 제공한다.
Java의 특징(5) 쉬운 Networking 네트워크 프로그래밍을 간단하게 처리할 수 있도록 해줌. 새로운 네트워크 패러다임에도 유연하게 대처하는 능력 있음. Multithreading Thread : 우리가 사용하는 일반적인 모든 프로그램 즉 프로세스(process)를 실행하는 단위 Ex) 한글97의 인쇄, 프린터설정, 저장부분 Multithreading : 하나의 프로그램 안에서 여러 작업을 동시에 할 수 있는 기능 Ex) Windows98(Single tasking and Multithreading)
Java의 단점 느린 수행 시간 C보다 평균 8배 정도 최대 20배까지 느리다. 실행시간에 발생하는 Garbage Collection으로 인해 compile 되고 나서 다시 JVM을 이용해 해석하므로(인터프리터방식) 네트워크 속도가 느리다 (Java Applet을 Web Server로부터 Web Client의 요구 시 download하여 실행하게 되는데 로딩시간이 너무 김) . 보안에 따른 Applet의 응용범위 제한.
Java의 기본 예제 Hello, World 프로그램 1. // 2. // Sample HelloWorld application 3. // 4. public class HelloWorldApp { 5. public static void main (String args[]) { 6. System.out.println("Hello World!"); 7. } 8. } - 먼저, 위의 source code를 입력하는 데 필요한 에디터는 무엇인가? - 위의 source code를 입력하였을 경우, 파일 의 이름은 무엇인가? - compile은 어떻게 할 것인가? - 실행은 어떻게 시킬 것인가?