Presentation is loading. Please wait.

Presentation is loading. Please wait.

프로그래머를 위한 Java 2 제1장 Java, JVM 소개

Similar presentations


Presentation on theme: "프로그래머를 위한 Java 2 제1장 Java, JVM 소개"— Presentation transcript:

1 프로그래머를 위한 Java 2 제1장 Java, JVM 소개

2 1.1 Java 소개 Platform-independent Java Java environment Java platforms
Java programming environment Java run-time environment Java platforms JVM components

3 Programming Languages
As SW system evolves, so new PL has been introduced. Major languages Assembly : ~1960, hardware access Fortran : 1960s ~1980s, scientific program C : 1970s~1990s, all kinds of program C++ : 1980s~1990s, OO-based program Java : 1990s~, ubiquitous program C# : 2000s~, MS Windows-based program

4 Platform Dependence x86 Windows Executable Windows (x86) x86 Windows
Compiler x86 Linux Executable Linux (x86) C program x86 Linux Compiler SPARC Solaris Executable Solaris (SPARC) SPARC Solaris Compiler

5 From Where, Such Dependence?
Programs should modify themselves in accord with a specific platform. Hardware Instruction set architecture (ISA) Memory management model Operating System Executable file format API (Application Programming Interface) Linking and relocation : addressing reference

6 Platform-Independent Java
Platforms should support Java programs. Platform-independent language Neutral to any hardware and any OS Write Once, Use Everywhere Suitable for embedded programming Multiple platforms satisfying a single specification But is that always correct? Larger memory footprint Slow execution speed Elaborate system software technology is required.

7 Java Virtual Machine (JVM)
Core of Java’s platform independency A virtual machine Might be implemented as a software layer on top of a platform or as a hardware platform Software approach : SUN JDK, HotSpot Hardware approach : Java chip Software approach is more effective so far. Instruction set architecture : bytecode Smart memory system with GC enabled Executable format : class file Standard set of APIs Symbolic reference instead of address

8 Platform Independence
Windows, JVM (x86) Java class file Linux, JVM (x86) Java program Java Compiler Solaris, JVM (SPARC)

9 Why Java? Platform independence
Network support : stream-based execution model Dynamic loading and seamless program update Rigorous security checking Bytecode verification Access-level based security model No memory leakage Automatic memory reclamation No pointer access Small code size : bytecode Object-Oriented language

10 Benefit from Java User-side Developer-side
Consistent look-and-feel on multiple devices No need to worry about the platform Buy once, Use everywhere Developer-side Reduced maintenance cost No source rewrite/recompile Relatively free from backward compatibility Easy to commercialize a new platform So far, the benefit is more obvious in the developer size. User does not care the platform independence much.

11 Java Environment Java Development Kit (JDK)/SDK
Java programming environment Generate class files from program sources Compiler, debugger, document generator, … Program sources might be made from Java, C, Lisp, … Easy to be of Java : platform independent Java runtime environment (JRE) Execute Java programs Consists of JVM and Java API. Hard to be of Java : platform dependent

12 Java Programming Environment
A Java program = multiple “.java” files A Java executable = multiple “.class” files App_1.java App_2.java App_1.java Java programming environment App_1.class App_2.class App_1.class

13 Java Compiler (javac) Java compiler App1.class App2.class App3.class
Program “App” class App1 { }; class App2 { class App3 { App1.class Java compiler App2.class App3.class Compiles a Java source into multiple class files A Java source consists of definitions of multiple classes. Java compiler creates a class file per a class definition. Currently, Javac does not generate good-quality code. Almost no optimization JRE itself should perform optimization

14 Java Document Generator(javadoc)
Comments of ‘/** .. */’ Describe the semantics and usage of program constructs such as classes, methods and fields Java file containing API description javadoc

15 Java Runtime Environment (JRE)
Environment to execute bytecode program Java virtual machine : bytecode execution Java API : standard class library package JRE configuration Java processor + JavaOS + JVM Non-Java processor + JavaOS + JVM Non-Java processor + OS + JVM

16 Applets and Applications
JRE Configuration Applets and Applications Java Base API Java Standard Extension API Java Base Classes Java Standard Extension Classes Java Virtual Machine Porting Interface Adapter Adapter Adapter Browser JavaOS OS OS OS Hardware Hardware Hardware Hardware Java on a Browser Java on a desktop OS Java on a smaller OS Java on JavaOS

17 Java Processor Bytecode execution hardware engine
picoJava, microJava, ultraJava Bytecode frontend for ARM Hard to implement all JVM functionalities Memory management Thread management Require the support of JavaOS or JVM So far, not popular Language-specific hardware is a bit expensive.

18 JavaOS Operating system for Java platform
Java virtual machine Java Embedded API Windowing, Networking, File system Designed for Network Computer(NC), consumer device, and network device So far, not popular Language-specific OS is a bit expensive.

19 Java Standard Extension API
JRE on JavaOS Applets and Applications Java Standard Extension API JavaOS JavaOS Java API Java API JVM JVM JVM JavaChip M processor

20 Three Java Platforms

21 J2SE Java 2 Standard Edition Java platform for desktop environment
Starting-point of other platforms HotSpot client VM Assuming a moderate application life Less than 1 day Short startup time, fast execution

22 J2EE Java 2 Enterprise Edition
Java platform for server-side application Enterprise JavaBeans(component technology), CORBA, Java Server Pages, Servlet, JDBC, XML, Java Transactions HotSpot server VM Assumes a long application life Fast execution Dynamic compilation

23 J2ME Java 2 Micro Edition Java platform for embedded systems
VM + Profile VM : bytecode execution environment Profile : library for a specific device Replacing previous embedded Java and personal Java Requires Immediate response Low power consumption Minimum-level of network connection Wide range of embedded systems

24 J2ME and Other Platforms
Servers Workstations PCs Thin Clients Battery Powered Card HotSpot JVM KVM Card VM Java Classes Smart Card Profile CDC Foundation Class TV Screen Phone Car CLDC Core Class MIDP Kitty- Hawk DojaP J2EE J2SE J2ME (Java 2 Micro Edition) Embedded Space CVM

25 1.2 자바 관련 사이트 - SUN의 공식 자바 사이트

26 1.2 자바 관련 사이트

27 1.2 자바 관련 사이트 - 온라인 상에서 발행되는 자바 관련 잡지

28 1.2 자바 관련 사이트

29 1.2 자바 관련 사이트 - GNU 자바 사이트

30 1.2 자바 관련 사이트

31 1.3 자바 언어 맛보기 HelloWorld.java 1. 편집기를 이용해서 HelloWorld.java 파일을 작성
1 class HelloWorld { 2 3 // 주석 부분 4 public static void main (String args[ ]) { 5 6 String msg = "World"; 7 8 System.out.print("Hello "); 9 System.out.println(msg); 10 } 11 }

32 1.3 자바 언어 맛보기 2. javac라는 자바 컴파일러를 이용해서 HelloWorld.java 파일을 컴파일
3. javac를 이용하여 컴파일하면 HelloWorld.class라는 파일이 생성됨 생성된 HelloWorld.class 파일은 java라는 자바 인터프리터에 의해 실행 결과 % java HelloWorld Hello World

33 1.4 자바 애플릿 만들어보기 자바에는 어플리케이션과 애플릿 프로그램이 있다. 애플릿 (applet)
웹브라우저 상에서 실행되는 프로그램 appletviewer나 네스케이프를 이용해서 실행 어플리케이션 (application) 일반적인 응용 프로그램 java라는 인터프리터를 이용해서 실행 애플릿은 네스케이프나 익스플로러와 같은 웹브라우저에서 실행되는 프로그램 앞에서 보여준 HelloWorld.java 프로그램은 어플리케이션

34 1.4 자바 애플릿 만들어보기 Hello.java 1. 편집기를 이용해서 Hello.java 파일을 작성
1 import java.awt.*; 2 import java.applet.*; 3 public class Hello extends Applet { private String Greeting[ ] = "Hello, world "; 6 public void paint(Graphics g) { g.drawString(Greeting[0], 25, 25); } }

35 1.4 자바 애플릿 만들어보기 2. 편집기를 이용해서 Hello.html 파일을 작성 예제: Hello.html
1 <html><head><title>Hello</title></head> 2 <body> 3 <applet code=Hello.class width=250 height=250> 4 </applet> 5 </body> 6 </html>

36 1.4 자바 애플릿 만들어보기 3. javac를 이용해서 Hello.java를 컴파일 % javac Hello.java
4. 애플릿뷰어(appletviewer)나 네스케이프를 이용, Hello.html 파일을 본다 애플릿은 java 인터프리터로 실행시키지 않고, 웹브라우저나 애플릿뷰어로 실행 프로그램을 개발하는 동안에는 보통 애플릿뷰어를 이용하는 것이 좋음 웹브라우저에는 캐쉬 기능으로 한번 읽어온 애플릿 클래스는 다시 읽어오지 않고 사용하기 때문에 코드를 변경하고 컴파일해도 새로운 클래스가 로드(load)되지 않음

37 1.4 자바 애플릿 만들어보기 결과 % appletviewer Hello.html

38 1.5 초보자가 자주 범하는 실수들 1. 자바는 대소문자를 구별 자바는 프로그램에서는 물론 파일 이름도 대소문자를 구별
2. 한글이름으로 된 디렉토리에서는 잘 실행되지 않음 DOS에서 한글 이름의 디렉토리를 사용하는 경우에 문제가 생길 수 있다 클래스 경로(path)를 찾는 동안에 한글 이름의 디렉토리는 자바나 웹브라우저가 잘 인식하지 못하기 때문임 3. 자바 소스 파일은 .java로 끝나고, 텍스트 형태로 저장해야 함 메모장이나 워드를 사용하는 경우, 자바 소스 파일의 이름을 확인 java로 끝나야 함

39 1.5 초보자가 자주 범하는 실수들 4. 자바 실행 파일 경로(PATH)가 제대로 설정되어야 함
Windows 환경에서 만약 JDK가 C:\jdk1.2 디렉토리에 설치되어 있다면, autoexec.bat 파일에 다음 변수를 설정 set PATH=%PATH%;c:\jdk1.2\bin 유닉스에서 /usr/local/java에 설치되어 있다면 C-shell 사용자는 .cshrc 파일에 다음과 같은 환경 변수를 설정 set path=(/usr/local/java/bin/:$path)

40 1.5 초보자가 자주 범하는 실수들 5. main()이 있는 클래스를 실행시켜야 한다
main()이 없는 클래스는 java 인터프리터로 실행시킬 수 없다 6. main은 항상 public static void main(String args[]) 형태이다 7. 애플릿으로 작성한 클래스는 항상 public이다 8. 한 파일에 public 클래스는 1개를 초과할 수 없다 한 파일에는 public 클래스가 최대 1개이다 1개를 초과하는 경우에는 컴파일 시에 에러 메시지를 보여 준다 9. public으로 선언된 클래스가 있는 경우에 파일 이름은 클래스 이름과 동일해야 10. 생성자(constructor)는 리턴 타입이 없고, 클래스 이름과 동일하다 생성자는 클래스 이름과 동일해야 하고 리턴 타입이 없어야 함 리턴 타입이 있는 경우에는 일반 함수로 인식

41 1.5 초보자가 자주 범하는 실수들 11. 애플릿은 애플릿뷰어나 웹브라우저를 이용해서 실행시켜야 한다.
12. HTML에서 애플릿의 width와 height 사이에는 ","가 없다. <applet code=클래스파일 width=300 height=200> </applet> 13. JDK에서 제공하는 클래스 이름과 동일한 이름으로 클래스를 만들지 않는 것이 좋다. 14. 클래스의 멤버 필드와 함수의 아규먼트 이름이 같은 경우, 아규먼트의 이름이 우선 순위가 높다. public class Test { int x; public Test(int x) { x = x; }

42 1.5 초보자가 자주 범하는 실수들 15. HTML에서 애플릿의 code 부분에 클래스 이름이 정확한지를 확인
<applet code=클래스파일이름 width=300 height=200> </applet> "클래스파일이름"의 철자가 틀리는 경우에 IOException 에러가 발생 16. BorderLayout에서 컴포넌트를 붙이는 경우, "East", "South", "West", "North", "Center"의 대소문자 구별 및 철자에 유의 철자가 틀리는 경우에 컴포넌트가 화면에 안 보임 17. 애플릿에서 Image나 AudioClip을 읽어올 때 getCodeBase( )는 애플릿 클래스가 있는 곳의 URL을 리턴 getDocumentBase( )는 HTML 파일이 있는 곳의 URL을 리턴 18. 자바 언어의 수많은 클래스들과 메소드를 모두 기억한다는 것은 불가능 사용하는 JDK에 맞는 API 문서를 java.sun.com에서 다운로드 받아 필요할 때마다 참조

43 1.5 초보자가 자주 범하는 실수들 19. Button a[] = new Button[10];
이 문장은 버튼을 만드는 것이 아니라 버튼이 들어갈 배열을 만듬 배열을 생성하는 것과 배열 안에 들어갈 객체를 혼동하지 마라 !! 20. 자바 언어에서는 클래스나 메소드에 이름을 붙이는 규칙이 있음 클래스 이름은 영어 명사형으로 붙이고 대문자로 시작 여러 단어를 사용할 때는 새로 시작하는 단어는 "_"를 사용하지 않고, 대문자로 시작 예: Car, ChattingServer 메소드 이름은 동사형으로 소문자로 시작 여러 단어를 사용할 때는 마찬가지고 시작하는 단어를 대문자로 한다 예: getName(), setLabel() 멤버 필드의 이름은 의미에 맞게 붙이고 소문자로 시작한다

44 1.6 자바 환경 도구의 사용법 자바 환경 도구 JDK의 bin 디렉토리에 들어 있는 여러 가지 실행 프로그램
Windows 98/NT용JDK 1.2는 전체적으로 다음과 같은 구조로 구성

45 1.6 자바 환경 도구의 사용법 JDK 1.2를 설치한 후에 PATH에 JDK 1.2의 bin 디렉토리를 추가
JDK 1.2에서는 JDK 1.1에서와 달리 CLASSPATH를 설정하지 않아도 기본적인 시스템 클래스와 현재 디렉토리에서 클래스를 찾는다. 그외 다른 디렉토리에 있는 클래스를 사용할 필요가 있는 경우에 CLASSPATH를 설정 JDK 1.1 버전에서 사용되던 classes.zip 파일은 아래 3개의 파일로 분리 rt.jar 가장 기본적인 시스템 클래스들로 구성 i18n.jar 문자 변환 클래스들과 국제화와 지역화에 관련된 파일들로 구성 tools.jar JDK 유틸리티 도구들을 위한 클래스들로 구성

46 1.6 자바 환경 도구의 사용법 javac 컴파일러 형태
javac [ options ] [ sourcefiles ] ] 옵션 -classpath <클래스패스> : 지정된 클래스패스를 이용한다. -d <디렉토리> : 클래스 파일의 위치를 지정한다. -deprecation : deprecated API 사용에 관해 경고 메시지를 보여준다. -encoding <인코딩이름> : 소스 파일의 인코딩 이름을 설정한다. 이 옵션이 사용되지 않는 경우에 플랫폼의 디폴트 컨버터가 이용된다. -g : 디버깅 정보를 생성한다. -g:none : 디버깅 정보를 생성하지 않는다. -g:keyword list : 컴마로 구별되는 키워드에 대해서만 디버깅 정보를 생성한다. -nowarn : 경고 메시지를 출력하지 않는다. -O : 코드를 최적화한다. -sourcepath <소스패스> : 소스 파일의 위치를 지정한다. -target <버전> : 지정된 버전의 VM에서 작동되는 코드를 생성한다.

47 1.6 자바 환경 도구의 사용법 java 인터프리터 형태
java [ options ] class [ argument ... ] java [ options ] -jar file.jar [ argument ... ] 옵션 -classpath <클래스패스> -cp <클래스패스> : 클래스나 jar, zip 파일이 있는 디렉토리를 기술한다. -Dproperty=value : 시스템의 속성을 기술한다.

48 1.6 자바 환경 도구의 사용법 appletviewer 애플릿 실행하기 애플릿을 실행시켜주는 브라우저이다. 형태
appletviewer [ options ] url 옵션 -encoding <인코딩이름> -J <자바옵션> : java 인터프리터의 옵션을 사용할 수 있다. url은 자바 애플릿을 포함하는 HTML 파일의 URL 주소를 지정

49 1.6 자바 환경 도구의 사용법 javah 헤더 파일 생성하기 C 언어를 위한 헤더 파일을 생성한다. 형태
javah [ options ] fully-qualified-classname 옵션 -o <출력파일> : 결과물을 저장할 파일을 지정한다. -d <디렉토리> : 헤더 파일이 생성될 디렉토리를 지정한다. -stubs : 자바 파일에서 C 선언을 생성하도록 한다. -jni : JNI 스타일의 메소드 프로토타입을 갖는 헤더 파일을 생성한다.

50 1.6 자바 환경 도구의 사용법 jar 압축 파일 만들기 자바 압축 파일을 만들고, 압축을 풀어준다. 형태
jar [ option ] [ manifest-file ] destination input-file [ input-files ] 옵션 c : 새로운 압축 파일을 만든다. t : 압축 파일의 내용을 화면에 보여준다. x <파일> : 파일의 압축을 푼다. f : 두 번째 아규먼트가 처리할 jar 파일임을 나타낸다. m : manifest 파일을 포함한다. u : 기존의 jar 파일의 내용을 업데이트한다.

51 1.6 자바 환경 도구의 사용법 javap 역어셈블러 클래스 파일을 역어셈블한다 형태 javap [ option ] class
옵션 -l : 지역 변수 테이블을 보여준다. -public : public으로 선언된 메소드만 보여준다. -protected: protected와 public으로 선언된 메소드를 보연준다. -package : package, protected, public으로 선언된 메소드를 보여준다. -private : 모든 메소드를 보여준다. -s : 내부 시그니쳐 형태로 보여준다.


Download ppt "프로그래머를 위한 Java 2 제1장 Java, JVM 소개"

Similar presentations


Ads by Google