앞부속

Size: px
Start display at page:

Download "앞부속"

Transcription

1

2

3 머리말독자들의사랑에힘입어이번에개정판이나오게되었습니다. 독자여러분께진심으로감사드립니다. 개정판에는초판에서아쉬웠던부분을수정하였습니다. 실무에서사용하지않는일부내용을삭제하고, 실무에필요한 for-each 문, Calendar 클래스, MouseWheelEvent 등의내용을추가하였습니다. 연습문제도추가로수록하였습니다. 2004년 JDK 1.5 버전이후에세상에나온제네릭 (generics, 일반화 ) 은그사용이점점늘고, 현재제네릭프로그래밍이라는새로운패러다임이정착되고있어서, 기존에 8장에있던 제네릭과컬렉션 을 7장으로옮기고, 군더더기를없애고, 정성스럽게수정하였습니다. 책에서다루는이클립스와 JDK 를최신버전으로바꾸었습니다. 또한본문과소스의이해력을높이기위해변화를주었습니다. 자바 (Java) 는그이전시대에있었던프로그래밍언어에서한차원진화된개념으로개발된가히혁명적언어이며플랫폼입니다. 한번작성된자바프로그램은어느컴퓨터, 어떤운영체제에서도실행될수있습니다. Write Once Run Anywhere 의세상이만들어지는것입니다. 데스크톱, 웹서버및웹클라이언트, 셋톱등의임베디드장치, 스마트폰을중심으로하는모바일단말기, 스마트 TV 등의가전제품등생활과산업의전분야에사용되고있습니다. 자바는현재소프트웨어시장에서가장큰지배력을뽐내고있으며, 미래창조시대를지배할프로그래밍전문가들이알아야할필수언어입니다. 최초로인터넷웹브라우저를만들고넷스케이프를공동창업한마크앤드리슨은월스트리트저널에실은글에서 소프트웨어기업이세상을지배 하는전쟁이시작되었음을강하게말하였습니다. 그는앞으로의 10년이기존업계의강자와새 P R E F A C E 3

4 P R E F A C E 로운소프트웨어로무장한반란군의엄청난대결이예상된다고힘주어말합니다. Over the next 10 years, the battles between incumbents and software-powered insurgents will be epic. 소프트웨어가주목받는세상이이미왔고, 소프트웨어는이시대의 IT 세계를지배할것입니다. 자바 (Java) 가바로스마트모바일등미래 IT 세계를지배할강력한언어가될것입니다. 이책은다양한독자들이자바를배우기쉽도록노력한여러가지특징을가지고있습니다. 첫째, 책의내용을충실히정리하고적절한예제를수록하였습니다. 둘째, 어려운개념을쉽게이해하도록많은그림과삽화를삽입하였습니다. 셋째, 각절마다 Check Time 문제를두어배운내용을확인할수있도록하였습니다. 넷째, 연습문제는이론문제와실습문제로나누고, 홀수번과짝수번을유사한문제로꾸며, 홀수문제에대한반복으로짝수문제를연습할수있도록구성하였습니다. 다섯째, 각장마다 Open Challenge 문제를두어학생스스로도전하는과정을두었습니다. 좋은책을만들고자저자와출판사는최선의노력을다하였습니다. 생능출판사관계자와함께수고한김효수교수님께감사드립니다. 수연, 연수, 수희, 그리고항상곁에있는아내와부모님께감사합니다. 하나님께감사합니다. 2013년 1월함박눈이쏟아지는날에, 황기태 4

5 머리말자바프로그래밍책을집필함에있어서많은주저함과고민이있었습니다. 저의명예를걸고서점의가판대위에세울수있는책을만들어낼수있을까? 이책을선택한자바독자들을실망시키지않고, 이해하기쉽고가슴에와닿는자바프로그래밍책을과연쓸수있을까? 참으로많은고민을하였습니다. 그러나현재모바일업계에서일하고있는제가미약하나마실무적인측면에서도움을줄수있는부분이있지않을까생각하고책을쓰기로결심하였습니다. 제가현재일하고있는모바일업계에서자바를모르고는취업이힘들정도로자바는매우중요한언어이며플랫폼입니다. 특히자바를기반으로한안드로이드는스마트폰시장에서가장점유율이높은플랫폼으로서자바는모바일업계에서매우중요합니다. 이책을쓰면서독자에게바라는것은단순히프로그래밍언어를공부하는것에그치지않고자바언어를사용하여주어진과제를어떻게더잘해결할것인가, 어떻게더좋은프로그램을만들것인가를같이고민하는것입니다. 이책이독자여러분이고민할때옆에놓고찾아볼수있는안내서가되었으면좋겠습니다. 함께책을만드느라고고생한황기태교수님께감사를드리고원고를깔끔하게정리하여좋은책을만들어주신생능출판사여러분께도감사를드립니다. 마지막으로부모님과아내, 그리고책을기다리고있는아들동환에게감사를전합니다. P R E F A C E 2013년 1월판교에서김효수 5

6 이 책 의 특 징 Objectives 학습목표로그장에서무엇을배우는지를제시하였다. CHECK TIME 이미배운내용을점검하기위해단답형식의문제를제시하였다. Tip 학습한내용의보충설명이나참고사항등을정리하였다. 잠깐! 지나치기쉬운내용들을환기시키기위해주의사항등을설명하였다. 6

7 요약 SUMMARY 배운내용을정리하기쉽도록주요용어를중심으로주요내용을요약하였다. Open Challenge 프로젝트문제로그장에서학습한내용을응용하여프로그램을작성할수있도록하였다. 연습문제 EXERCISE 배운내용을정확히이해하고있는지스스로검토하도록하기위한 이론문제 와이론을바탕으로실전응용프로그램을작성해보도록하는다양한 실습문제 를수록하였다. 본문을쉽게이해하도록돕는그림과삽화 내용을쉽게이해하고지루하지않도록그림과삽화를다양하게사용하였다. 7

8 C O N T E N T S 차례 CHAPTER 01 머리말 3 이책의특징 6 자바시작 1.1 컴퓨터와프로그래밍 자바의출현과 WORA 자바의진화 자바개발환경구축 자바프로그램개발 이클립스를이용한자바프로그램개발 자바응용프로그램의종류 자바의특징 49 요약 52 Open Challenge 53 연습문제 54 CHAPTER 02 자바기본프로그래밍 2.1 자바프로그램의구조 식별자 자바의데이터타입 자바에서키입력 연산자 조건문 93 8 요약 105

9 CHAPTER 03 CHAPTER 04 Open Challenge 106 연습문제 107 반복문과배열그리고예외처리 3.1 반복문 continue 문과 break 문 배열 다차원배열 main() 메소드의인자 자바의예외처리 150 요약 157 Open Challenge 158 연습문제 160 클래스와객체 4.1 객체지향과자바 클래스선언과활용 메소드활용 생성자 (constructor) 가비지와가비지컬렉션 접근지정자 static 멤버 final 225 요약 227 Open Challenge 228 연습문제 229 C O N T E N T S 9

10 C O N T E N T S 10 CHAPTER 05 CHAPTER 06 상속 5.1 상속의개념 클래스상속과객체 상속과접근지정자 상속과생성자 객체의타입변환 : 업캐스팅과다운캐스팅 메소드오버라이딩 추상클래스 인터페이스 284 요약 292 Open Challenge 293 연습문제 294 패키지개념과자바기본패키지 6.1 패키지 (Package) import와클래스경로 패키지만들기 자바 JDK에서제공하는패키지 Object 클래스 Wrapper 클래스 String 클래스 StringBuffer 클래스 StringTokenizer 클래스 Math 클래스 Calendar 클래스 356 요약 359 Open Challenge 360 연습문제 361

11 CHAPTER 07 CHAPTER 08 제네릭과컬렉션 7.1 컬렉션과제네릭 제네릭컬렉션활용 제네릭만들기 399 요약 406 Open Challenge 407 연습문제 408 입출력스트림과파일입출력 8.1 자바의입출력스트림 바이트스트림과파일입출력 문자스트림과파일입출력 버퍼입출력과파일입출력 File 클래스 파일복사응용프로그램작성 444 요약 448 Open Challenge 449 연습문제 450 C O N T E N T S CHAPTER 09 자바 GUI 기초, AWT 와스윙 (Swing) 9.1 자바의 GUI 자바 GUI 패키지 스윙 GUI 프로그램만들기 컨테이너 (Container) 와배치 (Layout) FlowLayout 배치관리자 BorderLayout 배치관리자

12 C O N T E N T S 12 CHAPTER CHAPTER GridLayout 배치관리자 배치관리자없는컨테이너 483 요약 487 Open Challenge 488 연습문제 489 자바의이벤트처리 10.1 이벤트기반프로그래밍 (Event Driven Programming) 이벤트객체 이벤트리스너 어댑터 (Adapter) 클래스 KeyEvent와 KeyListener MouseEvent와 MouseListener, MouseMotionListener 529 요약 536 Open Challenge 538 연습문제 539 기본적인스윙컴포넌트와활용 11.1 스윙컴포넌트소개 JLabel, 레이블컴포넌트 JButton, 버튼컴포넌트 JCheckBox, 체크박스컴포넌트 JRadioButton, 라디오버튼컴포넌트 JTextField, 텍스트필드컴포넌트 JTextArea, 텍스트영역컴포넌트 JList, 리스트컴포넌트 578

13 CHAPTER CHAPTER JComboBox, 콤보박스컴포넌트 JSlider, 슬라이더컴포넌트 587 요약 593 Open Challenge 594 연습문제 595 그래픽 12.1 스윙컴포넌트그리기 Graphics 도형그리기와칠하기 이미지그리기 클리핑 (Clipping) 스윙의페인팅메커니즘 628 요약 634 Open Challenge 635 연습문제 636 스레드와멀티태스킹 13.1 멀티태스킹 자바의멀티스레딩 스레드만들기 스레드생명주기와스케줄링 스레드종료 스레드동기화 (Thread Synchronization) wait(), notify(), notifyall() 을이용한스레드동기화 682 요약 687 C O N T E N T S 13

14 C O N T E N T S CHAPTER CHAPTER Open Challenge 688 연습문제 689 고급스윙컴포넌트 14.1 메뉴만들기 툴바 툴팁 다이얼로그만들기 팝업다이얼로그 파일다이얼로그 컬러다이얼로그 탭팬 740 요약 744 Open Challenge 745 연습문제 746 애플릿과멀티미디어 15.1 애플릿의특징 HTML 파일의 <applet> 태그 Applet 으로 AWT 애플릿만들기 JApplet 으로스윙애플릿만들기 애플릿에파라미터전달하기 애플릿의보안에따른제약 애플릿에서오디오다루기 데스크톱응용프로그램에서오디오다루기 요약 776

15 CHAPTER CHAPTER Open Challenge 777 연습문제 779 Check Time 정답 784 찾아보기 800 CD 수록 네트워크 16.1 TCP/IP 16.2 URL을이용한웹프로그래밍 16.3 소켓프로그래밍 16.4 서버- 클라이언트채팅예제 요약 Open Challenge 연습문제 JDBC 프로그래밍 17.1 데이터베이스 17.2 MySQL 17.3 콘솔에서 MySQL 데이터베이스활용 17.4 JDBC 프로그래밍 요약 Open Challenge 연습문제 C O N T E N T S 15

16

17 1 자바 시작 O b j e c t i v e s 컴퓨터프로그래밍과프로그래밍언어가왜필요한지를이해한다. 자바의출현배경을안다. 자바의종류를알고발전과정을이해한다. 자바개발환경 JDK, 이클립스 을이해한다. 자바프로그램의기초를안다. 자바응용프로그램의종류를안다. 자바의특징을이해한다.

18 C H A P T E R JAVA PROGRAMMING 자바시작 1.1 컴퓨터와프로그래밍 컴퓨터와소프트웨어 컴퓨터하드웨어소프트웨어프로그램앱 컴퓨터의형태는 [ 그림 1-1] 과같이방하나를차지하는메인프레임, 가장친숙한 PC, 최근에손안의컴퓨터라고불리는태블릿 (tablet) 이나스마트폰 (smartphone), 더작게는장난감에들어있는원칩컴퓨터 (one-chip com) 등과같이다양해졌다. 흔히, 이컴퓨터하드웨어 (hardware) 를작동시켜쇼핑을하고신문을보고음악을듣고게임을할수있게하는것을소프트웨어 (software) 라고하며, 프로그램 (program) 이라고부르기도한다. 소프트웨어는컴퓨터의중앙처리장치 (CPU) 가이해할수있는일련의명령들 (instructions) 과데이터로구성되며, CPU는이명령들을순차적으로해석하여실행함으로써요구된기능을수행한다. 소프트웨어는보통 CD나 DVD 같은저장매체로제공되지만, 최근에는인터넷에서직접다운로드받을수있는형태로제공되기도한다. 특히태블릿이나스마트폰에서작동하는소프트웨어를앱 (APP) 이라고부르며이들은인터넷앱스토어에서사용자가바로구입하기도한다. 메인 프레임 태블릿 PC 스마트폰 장난감 게임기 앱 앱 소프트웨어 혹은 앱 [ 그림 1-1] 컴퓨터와소프트웨어

19 CHAPTER 제1장자바시작 1 19 애플사의아이폰에서볼수있듯이사용자들이열광하는사용자인터페이스, 앱스토어, 시리등과같은것들은모두소프트웨어를통해이뤄진혁신들로서, 소프트웨어가제품경쟁력을좌우하는가장중요한요소가되었다. 하드웨어경쟁력에치중하던국내전자업계에서도최근에는소프트웨어경쟁력강화를목표로세우고있으며이를위해엄청난소프트웨어인력들을필요로하고있는상황이다. 소프트웨어경쟁력강화소프트웨어인력 프로그래밍언어 프로그래밍언어란프로그램을작성하기위한언어이다. 컴퓨터의 CPU는이진수 (binary code) 로된 0과 1밖에이해하지못하며, 이런언어를기계어 (machine language) 라고한다. 사람이직접기계어로컴퓨터프로그램을만들기는매우어렵다. 따라서 0과 1로구성되는기계어의각명령을 ADD, SUB, MOVE 등과같이가급적표현하기쉬운상징적인단어들인니모닉기호 (mnemonic symbol) 로일대일대응시킨언어인어셈블리어 (assembly language) 가만들어졌다. 그러나어셈블리어역시사람이다루기힘든저급언어로서다양한프로그램의구조나자료구조를표현하기에는너무복잡하였다. 이에사람이이해하고표현하기쉬우며, 복잡한알고리즘이나프로그램구조, 자료구조를효율적으로표현할수있는 Pascal, Basic, C/C++, C#, 자바등의고급언어가생겨나게되었다. 고급언어는크게절차지향언어와객체지향언어로나눌수있는데, 자바는객체지향언어이다. 객체지향언어의특징에대해서는 4장에서자세히알아보기로한다. 프로그래밍언어기계어어셈블리어고급언어절차지향언어객체지향언어 컴파일 프로그래밍은고급언어를이용하여전용개발도구나텍스트편집기로프로그램소스 (source) 파일 ( 혹은소스프로그램 ) 을작성하는것을의미한다. 소스프로그램은텍스트파일이어서어떤텍스트편집기에서도작성이가능하다. 기계어는컴퓨터가바로이해할수있는언어이지만 C나자바와같은고급언어로작성된소스프로그램은컴퓨터가이해할수없으므로, [ 그림 1-2] 와같이소스프로그램을기계어로변환하는과정이필요하다. 이를컴파일 (compile) 이라고한다. 기계어로변환해주는소프트웨어를컴파일러 (compiler) 라고하며각언어마다고유한컴파일러가있다. 그러므로 C 컴파일러로자바소스프로그램을컴파일할수는없다. 또한컴파일러를개발하는회사는보다효율적인자사만의컴파일러를개발하여판매한다. 소스파일의확장자로프로그램이어떤언어로작성되었는지구분할수있다. 어셈블리어의경우소스파일의확장자는.asm이며, C 언어의경우.c이고, C++ 언어의경우.cpp이며, 비주얼베이직의경우.vb이고, 자바의경우.java이다. 확장자와소스프로그램의언어가일치하지않으면해당언어의컴파일러는제대로컴파일하지못 컴파일컴파일러

20 20 JAVA 자바프로그래밍 JAVA PROGRAMMING 한다. 자바프로그램의경우컴파일된파일의확장자는.class 이다. 소스 프로그램편집 및 개발 프로그램 실행 if(i>0) { i=i*10; } i=i-j; System.out.println(i); 컴파일러 컴파일 소스 프로그램 기계어 [ 그림 1-2] 소스프로그램의편집과컴파일및실행과정 CHECK TIME 어셈블리어는주로어디에사용될까? 고급프로그램언어를기계어로변환하는과정을무엇이라고하는가? 자바컴파일러로 C++ 소스프로그램을컴파일할수있는가? 1.2 자바의출현과 WORA 자바의태동자바는애초지금과같이일반컴퓨터나인터넷환경에서사용될목적으로설계된것 이아니었다. 1991년에선마이크로시스템스 (SUN Microsystems) 는제임스고슬링 (James Gosling) 이란걸출한엔지니어를중심으로그린프로젝트 (green project) 라는이름으로가전제품에사용할소프트웨어를개발하기시작했다. 기존의프로그래밍

21 CHAPTER 제1장자바시작 1 21 언어로작성된프로그램은플랫폼 (platform) 간에호환성이없어사용자컴퓨터의플랫폼에따라다시소스를컴파일하거나아예프로그램을재작성해야하는단점이있었다. 특히매우다양한플랫폼을갖는가전제품을위해플랫폼에독립적인언어의필요성이대두되었다. 또한가전제품에들어가는제어장치는매우적은양의메모리를사용해야하므로새로운언어는이러한내장형시스템 (embedded system) 의메모리요구사항을충족해야만했다. 이에선마이크로시스템스는플랫폼독립적 (platform independent) 이며메모리사용량이적은새로운언어와실행체계를개발하였고, 처음에는이언어의이름을오크 (oak) 라고지었다. 이새로운언어는초기에는별로알려지지않았다. 그러나인터넷과웹이엄청난속도로발전하면서이언어역시급속도로퍼지게되었다. 웹의특징이웹콘텐츠가클라이언트의다양한플랫폼상의웹브라우저에서실행되도록하는것인데, 이언어의플랫폼독립성이딱들어맞았기때문이다. 선마이크로시스템스는오크를인터넷환경에적합하도록발전시켰으며, 마침내 1995년 SunWorld 95에서자바 (Java) 라는이름으로새로운기술을발표하였다. 당시가장많이사용되는브라우저인넷스케이프 (Netscape) 에자바기술을적용하면서자바는급격히퍼졌고, 오늘날인터넷시대의프로그래밍언어로자리매김을하게되었다. 데이터베이스로유명한오라클사에서 2009년에선마이크로시스템스를인수함으로써현재는오라클에서자바를제공하고있다. 플랫폼독립적메모리사용량이적은오크자바선마이크로시스템스오라클 잠깐! 오크란이름은선마이크로시스템스사무실앞의참나무 (oak) 에서따온것이라고한다. 자바로바뀐이유는이미오크란상표가등록되어있어이름을자바로바꾸었다고한다. 자바이름의유래에는여러가지설이있는데, 유력한것으로는개발자들이너무커피를많이마셨다는설과개발팀의핵심멤버인 James Gosling, Arthur Van Hoff, Andy Bechtolsheim의이니셜을따왔다는설이있다.

22 22 JAVA 자바프로그래밍 JAVA PROGRAMMING WORA(Write Once Run Anywhere) C나 C++ 등자바이전의프로그래밍언어들의컴파일러는기계어코드로변환할때프로그램이실행될대상컴퓨터의 CPU와운영체제에종속적인코드로변환한다. 예를들어, 소스프로그램을 Intel 펜티엄 CPU가탑재된 PC에윈도우운영체제가설치된환경에서실행되도록컴파일된기계어코드는동일한 Intel CPU를가지지만리눅스가설치된 PC에서는실행되지않는다. 혹은다른 CPU가설치된윈도우운영체제에서도실행되지않는다. 이러한특징을플랫폼종속성 (platform dependence) 이라고한다. [ 그림 1-3] 은플랫폼종속성을보여준다. Intel CPU 를 가진리눅스 환경에서 개발 C/C++ 응용 프로그램 플랫폼은 하드웨어 플랫폼과 운영체제플랫폼으로 되어 있어요. 프로그램의 플랫폼이호환성이 없는 이유는 다음과 같답니다. 기계어가 CPU마다 상이하기 때문 운영체제마다 API가 서로 다르기 때문 운영체제마다 실행파일 형식이 서로 다르기 때문 실행 실행되지 않음 실행되지 않음 Intel CPU + 윈도우 노트북 Intel CPU + 리눅스 Apple 사의 MAC PC [ 그림 1-3] 플랫폼종속성 자바가상기계 WORA 자바는개발단계에서부터플랫폼에독립적으로설계되었다. 따라서기존프로그래밍언어가가진플랫폼종속성을극복하여, 운영체제나하드웨어에상관없이자바가상기계 (JVM) 가있으면어디서나자바로작성된프로그램에동일한실행환경을제공하며동일한실행결과를기대할수있다. 또자바는웹브라우저, 분산환경의지원등으로네트워크에연결된어느클라이언트에서도실행이가능하다. 즉, 한번프로그램을작성하면어느하드웨어에서나어느운영체제에서나자바프로그램을실행시킬수있다. 이를WORA(Write Once Run Anywhere) 라고한다. [ 그림 1-4] 는자바의플랫폼독립적인 WORA의특징을보여준다. 개발자가한번자

23 CHAPTER 제1장자바시작 1 23 바응용프로그램을작성하면수정없이서로다른플랫폼을가진컴퓨터에서바로실행가능하다. 즉, Intel CPU를가진리눅스가설치된 PC, Apple 사에서만들고 MAC 운영체제가실행되는 PC, Intel CPU를가진윈도우가설치된노트북등플랫폼에무관하게바로실행가능하다. Write Once!! 자바응용 프로그램 Run Anywhere!! 실행 실행 실행 자바 가상 기계 Intel CPU + 윈도우 노트북 자바 가상 기계 Intel CPU + 리눅스 자바 가상 기계 Apple 사의 MAC PC [ 그림 1-4] 자바의플랫폼독립성, WORA(Write Once Run Anywhere) 자바의실행환경 자바가 WORA 의특징을가질수있는것은바이트코드와자바가상기계때문이다. 바이트코드 (byte code) 바이트코드는자바컴파일러가자바소스프로그램을컴파일한기계어로서, 플랫폼에대한종속성없이자바가상기계에서실행되는바이너리코드 (binary code) 이다. 바이트코드는컴퓨터상의 CPU에의해직접실행되지않으며, 대신자바가상기계가인터프리터방식으로이바이트코드를해석하여해당플랫폼에서실행시킨다. 바이트코드는자바가상기계에서실행되는기계어라고생각하면된다. 자바개발환경인 JDK(Java Development Kit) 는개발자가바이트코드를직접볼수있도록컴파일된자바클래스파일을디어셈블 (disassemble) 하는도구를제공한다. [ 그림 1-6] 은 [ 그림 1-5] 의자바소스프로그램을컴파일하여생성된클래스파일 ( 혹은클래스 ) 을디어셈블한바이트코드의예이다. 바이트코드는이진수로되어있어읽어도알기어렵다. 바이트코드인터프리터방식

24 24 JAVA 자바프로그래밍 JAVA PROGRAMMING Hello.java 파일에 저장 public class Hello { public static int sum(int i, int j) { return i + j; // i와 j의합을리턴 } public static void main(string[] args) { int i; int j; char a; String b; final int TEN = 10; i = 1; j = sum(i, TEN); a = '?'; b = "Hello"; java.lang.system.out.println(a); //? 출력 System.out.println(b); // Hello 출력 System.out.println(TEN); // 10 출력 System.out.println(j); // 11 출력 } } Hello.java 를 컴파일하는 명령으로 컴파일되면 Hello.class 파일이 생성된다. Hello.class 파일을 디어셈블하는 명령으로 디어셈블된 결과 Hello.bc 파일이 생성된다. [ 그림 1-5] Hello.java 를컴파일하고클래스파일을다시디어셈블하여 Hello.bc 파일생성

25 CHAPTER 제1장자바시작 1 25 sum() 메소드를 컴파일한 바이트 코드를 디어셈블한 결과 ( 자바의 어셈블리 코드로 출력 ) [ 그림 1-6] 클래스파일을디어셈블한자바바이트코드 자바가상기계자바가상기계는서로다른플랫폼에서동일한자바실행환경을제공한다. 그러나자바가상기계자체는각플랫폼에맞게포팅되어야하므로플랫폼종속적이다. 자바가상기계는자바개발사인선마이크로시스템스 ( 현재는오라클 ) 는물론이고 IBM, 마이크로소프트사등다양한회사에서제작공급하고있다. 한번작성된자바응용프로그램은어떤회사의자바가상기계가설치되어있든지상관없이정상적으로실행된다. [ 그림 1-7] 은자바소스프로그램을컴파일하고실행하는과정을보여준다. 자바컴파일러는자바소스프로그램을바이트코드로컴파일하여클래스파일 (class file) 을생성한다. 자바가상기계는클래스파일에들어있는바이트코드를하나씩실행한다. 자바가상기계는사용자가작성한자바프로그램을실행하는도중, JDK 라이브러리에들어있는다른클래스파일이나사용자가작성한다른클래스파일이필요하 자바가상기계플랫폼종속적 클래스파일

26 26 JAVA 자바프로그래밍 JAVA PROGRAMMING 클래스파일을로딩링크 (link) 과정이없다 면, 그때필요한클래스파일을로딩하고실행한다. 대부분의자바가상기계는실행중에 JDK 라이브러리로딩으로인한시간지연을줄이기위해자바프로그램실행시작전, 자바가상기계가시작할때 JDK 라이브러리를미리로딩하여둔다. 그림에서볼수있듯이자바에서는링크 (link) 과정이없다. 실행에 필요한 자바 클래스 라이브러리 (JDK APls)... Object.class String.class 자바 프로그래밍 클래스 로딩 Draw.java Draw.class 자바 가상 기계 자바 가상 기계 자바 가상 기계 Hello.java 자바 컴파일러 Hello.class 윈도우 운영체제 Apple 맥 운영체제 휴대폰 운영체제 Shape.java Shape.class Intel PC H/W Apple H/W 휴대폰 H/W 소스 코드 바이트 코드 [ 그림 1-7] 자바가상기계와자바응용프로그램의실행과정 자바응용프로그램개발과정과타언어 (C/C++) 에서의개발과정차이 자바에서의개발 : 컴파일혹은컴파일 + jar 압축 다른언어에서의개발 : 컴파일 + 링크 클래스파일실행파일 자바와타언어 (C/C++) 의실행환경차이자바와 C/C++ 의가장큰차이점은실행환경에있다. 프로그램을작성할때전문개발도구나텍스트편집기를사용하여프로그램소스를작성하는것에는큰차이가없다. 자바소스를컴파일하면자바가상기계에서실행가능한바이트코드형태의클래스파일이생성된다. 반면 C/C++ 소스를컴파일하고나면플랫폼상에서바로실행될수있는실행파일이생성된다. C/C++ 소스를컴파일해서생성된실행파일에는플랫폼에종속적인코드가있으며, 플랫폼이바뀌면다시소스를컴파일하고링크해야한다. 그러나자바의클래스파일은자바가상기계상에서실행되어플랫폼에종속적인코드를갖지않으므로플랫폼이달라져도다시컴파일할필요가없다. [ 그림 1-8] 은이들의실행환경차이를보여준다.

27 CHAPTER 제1장자바시작 1 27 if(i>0) { i=i*10; } i=i-j; System.out.println(i); 자바컴파일러 자바 프로그램 (Test.class) 자바 가상 기계운영체제 자바 소스 파일 (Test.java) 바이트 코드 (Test.class) 하드웨어 (a) 자바의 경우 if(i>0) { i=i*10; } i=i-j; cout<<i; C++ 컴파일러 / 링커 C++ 프로그램 (Test.exe) 운영체제하드웨어 소스 파일 (Test.cpp) 바이너리 실행 파일 (Test.exe) (b) C++ 의 경우 [ 그림 1-8] 자바와 C/C++ 의실행환경차이 Tip 자바와 C/C++ 실행환경및실행과정자바와 C/C++ 의실행환경과실행과정의차이점을정리하면다음과같다. 자바 자바는링크과정이없이컴파일러가바로바이트코드를생성한다. 바이트코드는자바가상기계에서만실행가능하다. 자바는런타임에필요한클래스들이자바가상기계에의해링크되며클래스로더가동적으로필요한클래스를로딩한다. ClassLoader 객체를이용하여프로그래머가직접클래스를로딩할수도있다. C/C++ C/C++ 에서는컴파일러가중간단계인오브젝트코드를생성한후링커가필요한라이브러리들을링크하여최종실행가능한실행파일을생성한다. 정적라이브러리의경우라이브러리를실행파일에포함시키므로실행파일크기가커진다. 동적라이브러리의경우런타임에링크가일어난다. 오브젝트코드및실행파일은플랫폼에따라다르므로플랫폼이바뀌면컴파일및링크를새로해야한다.

28 28 JAVA 자바프로그래밍 JAVA PROGRAMMING CHECK TIME 자바의태동원인이아닌것은? 1 가전제품에사용할소프트웨어를만들고자하였다. 2 플랫폼독립적인언어와실행환경을만들고자하였다. 3 내장형시스템에적합한언어와실행환경을만들고자하였다. 4 효율적인절차적언어를만들고자하였다. 자바의초기이름은무엇인가? WORA 는무엇의약자이며그뜻은무엇인가? 자바가상기계는플랫폼독립적인가, 의존적인가? 자바응용프로그램은플랫폼독립적인가, 의존적인가? 자바의 WORA 를가능하게만드는요인 2 가지는무엇인가? 1.3 자바의진화 자바는 1995년발표이래인터넷의보급확대, 휴대전화와같은네트워크연결기능을갖는휴대용기기의발전등으로폭발적으로성장하고있다. 다음은자바가얼마나성장하였는지단적으로보여주는예이다. 매년천억달러이상의비즈니스창출 30억달러이상의자바모바일게임시장 현재개발중인무선응용프로그램 10개중에7개는자바실행환경이용 약 450만명의소프트웨어개발자가자바관련직업에종사 엔터프라이즈에서는약 22억달러의자바응용서버와천백억달러정도의관련 IT 투자 약 5억 8천대의자바지원단말기와 100여개의사업자가자바플랫폼배치 약 7억 5천만대의자바카드보급 ( 출처 : The 10-yr Story: Java and the Networked World, Financial Express, )

29 CHAPTER 제1장자바시작 1 29 자바와오픈소스 2006년 11월에선마이크로시스템스 ( 현재는오라클 ) 는대부분의자바소스를 GPL(GNU General Public License) 로오픈하여누구나자바소스를열람하고참조할수있게하였다. 오픈소스 (open source) 란소프트웨어제공자의권리를보존하며소스코드를누구나열람할수있도록무상공개한소프트웨어를말한다. 오픈소스소프트웨어의장점은다음과같다. GPL 오픈소스 공개된소스코드를참조함으로써개발시간및비용을단축시킨다. 공개된소프트웨어를다양하고많은수의인원이참여하여개량함으로써우수한품질의소프트웨어를개발할수있다. GPL 오픈소스를이용하여만든새로운소프트웨어도 GPL의규칙에의해다시오픈소스로공개해야한다. 이처럼오픈소스는누구나자유롭게소스를공유하고발전시킬수있는권리를보장하고있어많은소프트웨어개발자및회사가동참하고있다. 그러나오픈소스가무조건다좋은것은아니다. 다음과같은단점도내포하고있다. 무단으로상용화할경우저작권침해가발생할수있다. 다양한개량버전의소프트웨어로인한호환성문제가생길수있다. 오픈소스중가장유명한리눅스와자바외에도많은오픈소스가있다. 대표적인소프트웨어로는 Open Office, Open Solaris, Mozilla, Apache, GNU, WebKit, Android 등이있다. 다음은오픈소스를모아놓은유명한사이트의주소이다. 많은개발자들이이곳에서오픈소스를다운받고수정하여제품을만들거나참고하고있다. 자바의배포판종류 오라클사는용도에따라 10여가지의서로다른자바배포판을제공하고있다. 자바배포판은자바응용프로그램을개발하고실행하는데필요한총체적환경을말하며 JDK(Java Development Kit) 라고도부른다. JDK는 [ 그림 1-9] 와같이자바컴파일러등자바응용프로그램을개발하는데필요한도구와자바응용프로그램이실행될때필요한자바가상기계와표준클래스파일들을포함하는 JRE(Java Run-time Environment) 로구성된다. 다음은대표적인 3가지자바배포판을설명한다. Java SE(Standard Edition) 자바표준배포판으로서, 데스크톱응용프로그램과서버응용프로그램의개발플랫폼이다. 이책에서설명되는모든내용은 [ 그림 1-9] 의배포판을기준으로한다. 배포판 JDK 자바컴파일러 JRE 자바표준배포판

30 30 JAVA 자바프로그래밍 JAVA PROGRAMMING Java Language Tools & ToolAPIs Java Language java javac javadoc jar javap JPDA JConsole Java VisualVM Java DB Security Int'l RMI IDL Deploy Monitoring Troubleshoot Scripting JVM TI Web Services Deployment Java Web Start Applet/Java Plug-in JavaFX User Interface Toolkits Swing Java 2D AWT Accessibility JDK JRE Integration Libraries Other Base Libraries Drag and Drop Input Methods Image I/O Print Service Sound IDL JDBC JNDI RMI RMI-IIOP Scripting Beans JNI Security Int'l Support Math Serialization Input/Output Networking Extension Mechanism JMX Override Mechanism XML JAXP Java SE API lang and util Collections Concurrency Utilities JAR lang and util Base Libraries Logging Management Preferences API Ref Objects Reflection Regular Expressions Versioning Zip Instrumentation Java Virtual Machine Java HotSpot Client and Server VM [ 그림 1-9] Java SE 구조 ( 출처 : 모바일용배포판 Java ME(Micro Edition) 모바일용배포판으로주로휴대전화나 PDA, 셋톱박스와같은제한된리소스를갖는하드웨어에서응용프로그램개발을위한플랫폼이다. 자바응용프로그램이실행되는동안사용되는메모리의양을가늠하는메모리풋프린트 (foot print) 가가장작다는특징이있다. Java SE의축소판이며임베디드및가전제품을위한 API가정의되어있다. 기업용배포판 Java EE(Enterprise Edition) 기업용배포판으로자바를이용한다중사용자, 기업용대규모응용프로그램개발을위한플랫폼이다. Java SE를기본으로인터넷기반의서버사이드 (Server-side) 컴퓨팅관련API가추가되어있다. CHECK TIME 휴대폰에실행될자바응용프로그램을개발하고자할때이용하여야할자바배포판은무엇인가? 오라클의자바플랫폼의모든소스는공개되어있는가?

31 CHAPTER 제1장자바시작 자바개발환경구축 JDK 와 JRE JDK는 Java Development Kit의약자로서, 자바응용프로그램개발에필요한자바컴파일러및기타도구, JRE(Java Runtime Environment), 클래스라이브러리의소스및자바응용프로그램샘플소스등을포함한다. 그구성은 [ 그림 1-10] 과같다. 프로그램을개발하지않는보통사용자의경우자바가상기계등을포함하는자바실행환경만필요하기때문에 JRE만있으면된다. JRE는대부분의컴퓨터에설치되어있기때문에보통사용자는잘모르고사용하는경우가대부분이다. 자바프로그램이실행되지않는다는시스템메시지가출력되면 JRE만따로다운받을수있다. [ 그림 1-10] 에서볼수있듯이, JRE는 bin 디렉터리밑에자바클래스파일을해석하고실행하는데필요한소프트웨어를두고, lib 밑에는호출하여실행할수있도록미리컴파일한자바 API 라이브러리를두고있다. JDK는다음오라클의자바사이트에서무료로다운로드받을수있다. JDK JRE JDK를다운로드받고설치하는방법은 CD를참조하기바란다. JDK를설치하면 [ 그림 1-10] 과같은디렉터리구조가생성된다. 자바 개발, 실행하는데 필요한 도구와 유틸리티 자바로 DB 응용프로그램을 개발하는데 필요한 도구 자바 프로그래밍 데모 예제와 소스 코드 네이티브 코드 프로그래밍에 필요한 헤더 파일 자바 런타임 환경. JVM, 클래스 라이브러리 등 실행에 필요한 파일 JDK 의 기본 라이브러리 외 추가 클래스 라이브러리와 개발 도구에서 필요로하는 여러 파일 자바 프로그램 샘플 소스 코드 자바 API 클래스들에 대한 자바 소스 [ 그림 1-10] Java SE 7(JDK 7) 설치후디렉터리구조 다음은 JDK 의 bin 디렉터리에포함되어있는주요한개발도구들이다.

32 32 JAVA 자바프로그래밍 JAVA PROGRAMMING 자바응용프로그램실행기 javac : 자바소스를바이트코드로변환하는컴파일러 java : jre의 bin 디렉터리에도동시에설치되어있는자바응용프로그램실행기로서, 이도구를통해자바가상기계가작동하며자바프로그램실행 javadoc : 자바소스프로그램으로부터 HTML 형식의 API 도큐먼트생성 jar : 자바클래스파일을압축한자바아카이브파일 (JAR) 을생성하고관리하는유틸리티 jdb : 자바응용프로그램의실행중오류를찾는데사용하는디버거 javap : 클래스파일에담긴바이트코드를자바소스와함께보여주는디어셈블러 (disassembler). [ 그림 1-6] 은이도구를이용하여생성하였음 appletviewer : 웹브라우저없이애플릿응용프로그램을실행하고디버깅하는유틸리티 자바 API 패키지자바 API 자바에서서로관련된클래스들을분류하여묶어놓은것을패키지 (package) 라부른다. 자바 API란오라클사에서제공하는것으로주요한기능들을미리구현한클래스라이브러리로묶어놓은패키지들이다. 개발자는이 API를이용하여쉽고빠르게자바프로그램을개발할수있다. 예를들어, 모니터화면에문자를출력하거나키보드에서입력을받는것과같은매우빈번히사용되는기능들은자바에서미리구현하여 API로제공한다. 이 API를이용하면개발자는일일이모니터나키보드를제어하는프로그램을작성하는노고를덜게된다. 이를위해개발자는자바 API로부터필요한클래스가속한패키지만 import하여사용하면된다. 패키지에대한자세한내용은 6장에서다룬다. 자바 API에대한문서는온라인으로다음사이트에서제공된다. 온라인자바 API 문서 [ 그림 1-11] 은온라인자바 API 문서를참조하는사례이다. 저자는자바프로그램을개발하는동안에이사이트를열어놓고참조한다. 독자들도이사이트를꼼꼼히읽어가면서자바프로그램을개발하기바란다. ( 사진출처 : 위키백과 ) 제임스고슬링 (James A. Gosling, ~ ) 은캐나다에서태어난소프트웨어개발자이다. 1995년에자바프로그래밍언어를최초로개발하였으며, 자바이외에도 Multi-Processor용 UNIX와 Complier, Mail System, 데이터인식시스템등을개발하였다. 제임스고슬링은많은가전제품들이하나의거대한네트워크에연동될것으로예측하였다. 즉, 가전제품의기능이향상되어프로그램이바뀔때마다가전제품을공장에보내어내장된프로그램을교체하는대신

33 CHAPTER 제1장자바시작 1 33 [ 그림 1-11] 온라인자바 API 문서 자바 IDE IDE란 Integrated Development Environment의약자로서, 영어단어가뜻하는그대로소스코드편집, 컴파일, 디버깅을한꺼번에할수있는통합개발환경이다. IDE 하면가장먼저떠오르는것이마이크로소프트 (MS) 사의비주얼스튜디오일것이다. 자바응용프로그램개발에사용되는유사한통합개발환경이있는데, 현재가장널리쓰이는것은이클립스 (eclipse) 이다. 이클립스는 IBM에의해자바로만들어진오픈소스소프트웨어로서 이책의모든소스는이클립스로개발되었으며, 이책의 CD에이들소스를이클립스환경에서설치하는법이들어있다. IDE 통합개발환경이클립스 에네트워크를통하여새로운프로그램을다운로드받아가전제품의기능을향상시킬수있다고보았다. 그의예측은 10년도되지않아현실로이루어져지금은휴대폰은물론이고 TV셋톱박스, 로봇등에자바로만든프로그램이탑재되어폭넓게쓰이고있다. 자바의아버지 라불리며, 가장영향력있는프로그래머중한사람이된그는인도네시아의자바섬에서나온커피를하루에 10여잔씩마시는 Java 예찬론자이기도하다. 그래서 Java 라는명칭을커피재배지인자바섬에서따왔다고한다.

34 34 JAVA 자바프로그래밍 JAVA PROGRAMMING Tip javadoc 을이용한자신만의 API 도큐먼트생성 JDK에포함된 javadoc을이용하면소스의선언문과특별한형식의주석문을파싱하여온라인자바api 문서 [ 그림 1-11] 과유사하게 HTML 형식의 API 도큐먼트를생성할수있다. 이문서에는클래스, 인터페이스, 생성자, 메소드, 필드등을기술한다. API 도큐먼트를생성하기위해개발자는자바소스파일에다음과같이 /** 와 */ 사이에정보를주어야한다. /** 이곳에기술되는내용은 javadoc이 API 도큐먼트로인식함 */ 다음소스는 Hello.java에 API 도큐먼트생성을위한주석문을삽입하여 HelloDoc.java 파일을만든것이다. [ 그림 1-12] 는 javadoc을이용하여자바소스에서 API 도큐먼트를생성하는과정이며 [ 그림 1-13] 은생성된 API 도큐먼트를브라우저로확인하는그림이다. 1 /** 주목 2 * javadoc 사용예제를위한클래스 3 */ 4 public class HelloDoc { 5 /** 주목 6 * 두정수의합을구하는메소드 7 * 8 i 합을구할첫번째정수형인자 9 j 합을구할두번째정수형인자 10 두정수의합을리턴 11 */ public static int sum(int i, int j) { 14 return i + j; 15 } public static void main(string[] args) { 18 int i; 19 int j; 20 char a; 21 String b; 22 final int TEN = 10; i = 1; 25 j = sum(i, TEN); 26 a = '?'; 27 b = "Hello"; java.lang.system.out.println(a); //? 출력 30 System.out.println(b); // Hello 출력

35 CHAPTER 제1장자바시작 } } System.out.println(TEN); System.out.println(j); // 10 출력 // 11 출력 HelloDoc.html 파일 생성 [ 그림 1-12] javadoc 을이용하여 HelloDoc.java 의 API 도큐먼트인 HelloDoc.html 생성 주목 주목 [ 그림 1-13] HelloDoc 클래스의 API HTML 문서, HelloDoc.html

36 36 JAVA 자바프로그래밍 JAVA PROGRAMMING 잠깐! 이클립스 (Eclipse) 는다양한프로그래밍언어의통합개발을지원하기위해 IBM이 VisualAge 라는소프트웨어를만드는과정에서자바언어로개발하게되었다. 2004년에 Eclipse 3.0의배포판을공급하기시작하여, UI와기능을개선한배포판을매년내놓고있다. 배포판은처음에 4개의목성위성이름으로붙이기로결정하여 Calisto(2006년 ), Europa(2007년 ), Ganymede(2008년 ), Galileo(2009년 ) 로붙이다가, 2010년에는태양을의미하는 Helios, 2011년에는남색쪽빛을의미하는 Indigo, 2012년에는로마신화에나오는주피터의아내이름인 Juno로이름을붙였다. 현재이클립스는 Ada, C, C++, Perl, PHP, Python, Ruby, Java, Android 등다양한프로그래밍언어의통합개발환경에사용되고있다. CHECK TIME 자바응용프로그램을개발하는사람이아닌경우자바응용프로그램을실행할수있는환경을갖추고싶을때설치하여야하는것은 JDK 인가, JRE 인가? JDK 를설치하면 src.zip 파일이있다. 이 zip 파일에는무엇이압축되어들어있는가? 자바컴파일러는어느디렉터리에설치되어있으며그이름은무엇인가? 자바명령실행기로서자바가상기계를가동시키는프로그램의이름은무엇인가? 또어디에설치되어있는가? 1.5 자바프로그램개발 자바프로그램을개발하는전체과정을설명하기위해다음과같이간단한자바프로그램을준비하였다. // Hello2030.java 파일에작성 public class Hello2030 { public static void main(string[] args) { int n = 2030; System.out.println(" 헬로 "+n); } }

37 CHAPTER 제1장자바시작 1 37 앞의자바프로그램은 " 헬로2030" 문자열을화면에출력하는프로그램으로서간단히설명하면다음과같다. public class Hello2030 클래스를정의한다. 클래스의이름은 Hello2030이며여러개의클래스를정의할수도있다. 모든클래스의정의는 { 으로시작하여 } 으로끝난다. 클래스 public static void main(string[] args) 자바클래스는여러개의함수를포함할수있다. 자바에서는함수를멤버메소드라고부른다. 프로그램실행은 main() 메소드부터시작한다. 모든메소드의정의도 { 으로시작하여 } 으로끝난다. 멤버메소드 main() int n = 2030; 지역변수를선언한다. 변수선언과함께초깃값을지정할수도있다. 변수선언문은 ; 으로끝난다. 지역변수 System.out.println( 헬로 + n); " 헬로 "+n의결과는 " 헬로2030" 문자열이며 " 헬로2030" 을출력하는실행문이다. System.out.println() 은 JDK에의해개발자에게제공되는자바 API이며, 개발자는이를이용하여화면에숫자와문자, 문자열들을출력한다. 모든실행문은 ; 으로끝난다. 자바소스편집 앞의자바프로그램을직접편집하여실행해보자. 먼저윈도우의보조프로그램에있는메모장을실행시켜아래 [ 그림 1-14] 와똑같이입력한다. 그리고 C:\Temp에 Hello2030.java로저장한다. 나중에설명하겠지만, 자바에서는클래스이름과자바소스파일이름이일치하여야한다. 클래스이름이 Hello2030이므로파일이름은 Hello2030.java이다. 자바소스파일의확장자는.java이다. 대소문자를구분하므로주의하기바란다. Hello2030.java.java 주목 주목 [ 그림 1-14] 메모장으로 Hello2030.java 소스작성

38 38 JAVA 자바프로그래밍 JAVA PROGRAMMING 자바소스컴파일 javac Hello2030.java Hello2030.class.class 명령창을실행시켜 Hello2030.java 파일이저장된디렉터리로이동한다. 그러고나서 [ 그림 1-15] 와같이Hello2030.java 소스파일을확인한후에 JDK의자바컴파일러인 javac를실행하여 Hello2030.java 소스를컴파일한다. 그결과 Hello2030.class 파일이생성된다. 컴파일된바이트코드가들어있는파일은확장자가.class이다. C:\Temp 디렉터리로 이동 컴파일 클래스 파일 생성 [ 그림 1-15] Hello2030.java 프로그램컴파일, Hello2030.class 클래스파일생성 자바응용프로그램실행 java 이제 JDK에서제공되는 java 명령으로 Hello2030.class를실행시켜보자. 이때확장자.class는빼고클래스이름 Hello2030만입력하는것에주의한다. Hello2030 응용프로그램의실행과결과는 [ 그림 1-16] 과같다..class 확장자를 붙이지 않는다. 실행 결과 [ 그림 1-16] Hello2030 응용프로그램실행

39 CHAPTER 제1장자바시작 1 39 자바프로그램의실행이시작되는메소드이름은? JDK는자바프로그램개발에필요한많은명령들을제공한다. 다음명령이의미하는바를설명하라. (1) javac prog.java (2) java binarycopy CHECK TIME 다음자바프로그램에서빈칸에적절한것은무엇인가? 그리고이소스파일을어떤이름으로저장해야하는가? public JavaApp { public static void main(string[] args) { int x = 2080; System.out.println(" 헬로 " + x); } } 1.6 이클립스를이용한자바프로그램개발 이책에서는특별한경우를제외하고는모든예제의작성과실행은이클립스를이용한다. 앞서만든 Hello2030.java 프로그램을이클립스를이용하여작성하고실행해보자. 이클립스실행 이클립스를실행하면 [ 그림 1-17] (a) 의첫화면이보이고바로 workspace를묻는다이얼로그가출력된다. 이클립스에서 workspace란개발자가자바프로그램을개발하는작업공간으로서일종의폴더이다. 독자들은미리 C:\ 자바학습 폴더를만들어두고, [ 그림 1-17] (b) 의윈도우에서 Browse 버튼을눌러 C:\ 자바학습 폴더를지정한다. 처음으로이클립스를사용하면 Welcome 페이지가출력될것이다. 이페이지를닫으면 [ 그림 1-18] 과같이이클립스의사용자인터페이스가보인다. 이클립스 workspace

40 40 JAVA 자바프로그래밍 JAVA PROGRAMMING 이클립스 Juno 배포판 (a) 초기화면 작업 공간 폴더 지정 (b) 작업공간 (workspace) 을지정하는윈도우 [ 그림 1-17] 이클립스실행 [ 그림 1-18] 이클립스의사용자인터페이스

41 CHAPTER 제1장자바시작 1 41 프로젝트생성 프로그램을작성하기에앞서우선프로젝트 (project) 를생성한다. 이클립스에서프로젝트를생성하려면메뉴에서 [ 그림 1-19] 와같이File New Project를선택한다. [ 그림 1-20] 과같이프로젝트의종류를선택하는윈도우가나타나고여기서 Java Project를선택한다. 이제 [ 그림 1-21] 의프로젝트생성윈도우가나타난다. Project name 칸에프로젝트이름을입력한다. 이예에서는프로젝트의이름을 SampleProject 로입력하였다. 이컴퓨터에 JDK 7이설치되어있기때문에프로젝트생성윈도우의 JRE 환경이 JavaSE-1.7로설정되어있는것을볼수있다. Finish 버튼을누르면프로젝트의생성이완료된다. 프로젝트 Java Project Project name 칸프로젝트생성윈도우 Project 메뉴 선택 [ 그림 1-19] 이클립스의사용자인터페이스. Project 메뉴선택 잠깐! 이클립스에서프로젝트는하나의자바응용프로그램에속하는여러개의자바소스파일과이미지, 동영상같은리소스, 컴파일된클래스파일들을일괄적으로관리하기위한개념이다. 프로젝트가생성되면프로젝트이름의폴더가생기고그안에개발자가만든소스와컴파일된클래스파일들이생겨나게된다.

42 42 JAVA 자바프로그래밍 JAVA PROGRAMMING Java Project 선택 [ 그림 1-20] 프로젝트의종류, Java Project 선택 프로젝트 이름 지정 이 컴퓨터에 JDK 7 이 설치되어 있음. 자동 Finish 선택 [ 그림 1-21] 프로젝트생성윈도우. 프로젝트이름을 SampleProject 로입력

43 CHAPTER 제1장자바시작 1 43 클래스생성 프로젝트를생성하고나면, 자바응용프로그램을작성하기위해클래스를생성해야한다. 메뉴에서 File New Class를선택하면 [ 그림 1-22] 와같이클래스생성윈도우가나타난다. Name 칸에클래스이름 Hello2030을입력한다. 나머지옵션은수정할필요가없으므로 Finish 버튼을눌러클래스생성을마치면, [ 그림 1-23] 과같이소스편집윈도우에 Hello2030 클래스의선언을포함하는소스가자동생성된다. 클래스생성윈도우 Name 칸소스가자동생성 주목 클래스 이름 입력 Finish 선택 [ 그림 1-22] 클래스생성윈도우. 클래스이름을 Hello2030 으로입력

44 44 JAVA 자바프로그래밍 JAVA PROGRAMMING 주목 주목 주목 [ 그림 1-23] 생성된 Hello2030 클래스소스. Hello2030.java 파일에저장 소스편집과컴파일및실행 소스편집윈도우자바프로그램의실행콘솔윈도우 [ 그림 1-23] 의소스편집윈도우에, 앞서메모장에작성한것과동일한소스를입력한다. 이클립스는소스입력과동시에자동으로컴파일하기때문에컴파일과정이따로없이바로실행할수있다. 작성된자바프로그램의실행은 Run Run 메뉴를선택하거나툴바에서아이콘 ( ) 을클릭하면된다. 작성된프로그램을실행하면 [ 그림 1-24] 와같이실행결과가콘솔윈도우에출력된다. 실행 버튼 Run Run 실행 메뉴 실행 결과 콘솔 윈도우 [ 그림 1-24] 이클립스에서자바응용프로그램실행. 헬로 2030 출력

45 제1장 자바 시작 1 CHAPTER 자바 응용프로그램의 종류 자바 언어는 현재 IT 현장에서 가장 많이 사용되는 언어로서 다양한 분야에서 사용된 다. 자바 언어로 개발되는 응용프로그램의 종류에는 어떤 것들이 있을까? 자바 언어 로 개발되는 응용 분야를 살펴보자. 데스크톱 응용프로그램 자바 언어로 개발하는 가장 일반적인 응용프로그램으로서 PC 등의 데스크톱 컴퓨터 에 설치되어 실행되는 응용프로그램이다. 자바 개발 환경으로 사용하는 이클립스도 단독으로 실행 데스크톱 응용프로그램 이 유형에 속한다. 자바 실행 환경(JRE)이 설치된 어떤 컴퓨터에서도 실행되며 다른 응 용프로그램의 도움 없이 단독으로 실행된다. 이 책에서 설명하는 대부분의 내용이 데 스크톱 응용프로그램의 개발에 관한 것이다. [그림 1-25]는 자바로 개발된 스네이크 게임의 예를 보여준다. [그림 1-25] 자바 언어로 작성된 자바 데스크톱 프로그램 예 애플릿 응용프로그램 웹 페이지에 내장되어 실행되는 자바 응용프로그램을 애플릿(applet)이라고 한다. 애 플릿은 단독으로 실행될 수 없고 익스플로러와 같은 웹 브라우저에 의해 구동되고 실 행이 제어된다. 애플릿은 웹 서버에서 사용자 컴퓨터에 다운로드되어 사용자 컴퓨터 애플릿 웹 브라우저에 의해 구동되 고 실행이 제어

46 46 JAVA 자바프로그래밍 JAVA PROGRAMMING 에설치된웹브라우저에의해실행된다. 웹브라우저가애플릿을실행하기위해서는자바가상기계를가지고있어야한다. 데스크톱응용프로그램은내컴퓨터에설치되어있어야실행할수있는반면, 애플릿은어디서든지웹서버에접속하여실행할수있는장점이있다. 애플릿은서버에서다운로드되어사용자컴퓨터에서실행되므로보안의이유로접근할수있는자원 ( 리소스 ) 에제약이있다. 예를들면, 애플릿은실행중에사용자컴퓨터의파일을접근할수없다. 자세한내용은 15.6절에서다룬다. [ 그림 1-26] 은웹에서엑셀스프레드시트와같은기능을수행하는애플릿응용프로그램의예이다. [ 그림 1-26] 애플릿응용프로그램예 자바서블릿 (servlet) 응용프로그램 자바서블릿 (java servlet) 은애플릿과반대로서버에서실행되는서버용자바프로그램이다. 서블릿은 [ 그림 1-27] 과같이서버-클라이언트모델로구성되는시스템에서서버의역할을하며, 웹브라우저상에서실행되는애플릿이나자바스크립트코드등과통신한다. 애플릿은웹사용자에게 GUI 환경을제공하는간단한기능을구현하는반면, 서블릿은 Java EE의일부분으로서웹서버에연동되는데이터베이스나다른서버와연동하여쇼핑몰이나온라인뱅킹등의대규모의복잡한응용프로그램을구현할때쓰인다. 자바서블릿은사용자인터페이스를필요로하지않으며웹서버에의해실행이제어된다. [ 그림 1-27] 은서블릿과애플릿이서로통신하며작동하는예를보여준다.

47 제1장 자바 시작 1 CHAPTER 웹 브라우저 웹 서버 서버 JVM 인터넷 servlet 서버 [그림 1-27] 서블릿 응용프로그램 예 모바일 응용프로그램 자바는 설계 당시부터 플랫폼 독립적이고 메모리 사용량이 적으며 통신 환경을 지원 하도록 개발되었다. 그러므로 다양한 하드웨어, 소프트웨어 플랫폼을 갖는 모바일 기 기에 적합하여 다양한 모바일 응용프로그램 개발에 사용되고 있다. Java ME Java ME는 모바일 기기를 위한 자바 배포판으로서, 많은 이동 통신사와 단말기 제조 [그림 1-28] Java ME 실행 화면 Java ME 47

48 48 JAVA 자바프로그래밍 JAVA PROGRAMMING 사에채택되어게임, 멀티미디어응용프로그램등에사용되고있다. 유럽이나미국에서출시되는대부분의단말기에는자바기술이탑재되어있으며, 노키아, 삼성, LG, 소니에릭슨, 모토롤러등과같은세계유수의단말기제조사들은자바기술이탑재된단말기를출시하고있다. [ 그림 1-28] 은 Java ME를사용한사례를보여준다. 구글안드로이드 안드로이드 (Android) 검색엔진으로유명한구글 (Google) 의주도로여러모바일회사가모여구성한 OHA(Open Handset Alliance) 에서개발한무료모바일플랫폼을안드로이드라고한다. 개발언어는자바를사용하나오라클사의자바라이선스를피하기위해별도의개발도구를개발하였으며, Dalvik이라는새로운자바가상기계를개발하였다. 안드로이드는자바바이트코드의효율을개선한새로운바이트코드체계를개발하였으며, 기존바이트코드는호환성이없어변환이필요하다. 현재대다수의모바일단말기제조사에서안드로이드를채택하고있다. 안드로이드는스마트폰뿐만아니라모바일학습기기, 태블릿 PC, PMP 등다양한종류의모바일기기의플랫폼으로사용될것으로예측된다. [ 그림 1-29] 는안드로이드에뮬레이터에서실행되는안드로이드앱의사례를보여준다. [ 그림 1-29] 안드로이드앱의실행화면

49 CHAPTER 제1장자바시작 1 49 애플릿응용프로그램의약점은무엇인가? 웹서버에서실행되는자바응용프로그램을무엇이라고부르는가? CHECK TIME 구글의주도로만든자바기반의모바일플랫폼은? 다음중사용자인터페이스를만들필요가없는자바응용프로그램의종류는? 1 데스크톱응용프로그램 2 애플릿 3 서블릿 4 모바일응용프로그램 1.8 자바의특징 자바언어와자바시스템은다음과같은독특한특성을가진다. 객체지향자바는객체지향언어로서클래스계층구조, 상속성, 다형성, 캡슐화등을지원한다. 객체지향프로그램은해결할과제를실제세상의객체와객체간의상호관계로모델링하여인간의사고에가깝게표현한다. 객체지향특징은 4장과 5장을참조하기바란다. 클래스계층구조상속성다형성캡슐화 멀티스레드자바는하나의프로그램에서다수의스레드가동시에실행할수있는환경을지원한다. 멀티스레드프로그램을작성하기위해서는, 운영체제가멀티스레드를지원하고멀티스레드와관련된 API나라이브러리를제공해야만한다. C, C++ 등많은언어들은자체적으로멀티스레드를지원하지않아운영체제의도움을받는다. 그러나자바는운영체제의도움없이멀티스레드프로그래밍이가능하다. 멀티스레드를지원하지않는운영체제에서도자바를이용하면멀티스레드프로그램을개발할수있다. 멀티스레드프로그래밍은 13장을참조하기바란다. 다수의스레드동시에실행 플랫폼독립성자바는하드웨어, 운영체제등플랫폼에종속되지않는독립적인바이트코드로컴파

50 50 JAVA 자바프로그래밍 JAVA PROGRAMMING 자바가상기계 일되며자바가상기계만있으면하드웨어나운영체제를막론하고자바프로그램의실행이가능하다. 내부클래스 C$D.class 소스와클래스파일하나의자바소스파일에는여러개의클래스를작성할수있지만, 하나의클래스파일 (.class) 에는반드시하나의컴파일된자바클래스만이포함된다. 하나의자바소스파일에여러개의클래스를작성한경우, 컴파일후클래스마다별도의클래스파일이생성된다. [ 그림 1-30] 은 A.java에 4개의클래스가작성된예이다. A.java를컴파일하면 4개의클래스파일이생성된다. 클래스 D는클래스 C 내에작성된내부클래스 (innner class) 로서 C$D.class 이름으로생성된다. 하나의자바소스파일에작성된클래스중오직한클래스만 public으로선언할수있다. 소스파일내에public으로선언된클래스의이름과소스파일의이름이동일하게작성되어야한다. [ 그림 1-30] 소스파일과클래스, 클래스파일의관계 main() 메소드 실행모듈자바응용프로그램은한개의클래스파일또는다수의클래스파일로구성된다. 다수의클래스파일을 jar 파일형태로압축하여배포및실행이가능하다. 자바의실행은 main() 메소드에서시작되며, 하나의클래스파일에하나이상의 main() 메소드가있을수없지만다수의클래스파일이각각 main() 메소드를가지는것은상관없다. 캡슐화 클래스로캡슐화자바는객체지향언어의캡슐화 (encapsulation) 의원칙을철저히지켜변수나메소드

51 CHAPTER 제1장자바시작 1 51 는반드시클래스내에구현한다. 클래스에속하지않은변수나메소드는있을수없다. 클래스안에새로운클래스, 즉내부클래스를만들수있다. 패키지패키지는자바의독특한개념이다. 서로관련있는클래스는패키지로묶어관리한다. 패키지는파일시스템의폴더개념과같다. 예를들어, java.lang.system 클래스는 java\lang 폴더의 System.class 파일을나타내며, 여기서 java.lang을패키지라고부른다. 패키지파일시스템의폴더개념 하나의자바소스파일에서정의할수있는클래스의개수는? 10 개의클래스파일이있을때 main() 메소드는최대몇개가있을수있는가? CHECK TIME 클래스에속하지않은변수와메소드가있을수있는가? 이것은어떤객체지향속성과관련되는가?

52 52 JAVA 자바프로그래밍 JAVA PROGRAMMING 요약 프로그램또는소프트웨어는컴퓨터가이해하고처리할수있는일련의명령들이다. 프로그래밍언어는컴퓨터를구동시키는프로그램을작성하기위한언어이다. SUMMARY 소스파일을컴퓨터가이해할수있는기계어로변환하는것을컴파일이라한다. 자바는 1991년선마이크로시스템스 ( 현재오라클 ) 의제임스고슬링에의해개발되기시작하여 1995년에발표되었다. 자바의개발목적은매우다양한플랫폼을갖는가전제품을위해플랫폼에독립적인언어를개발할필요성에있었다. 또한가전제품에들어가는제어장치는매우적은양의메모리를사용하므로, 이러한내장형시스템 (embedded system) 의메모리요구사항을충족할수있는새로운언어의개발필요성에있었다. 자바는 GPL(GNU General Public License) 로소스를오픈한오픈소스소프트웨어이다. 자바의배포판은개발응용의실행환경에따라데스크톱이나서버응용을위한 Java SE, 모바일장치를위한 Java ME, 대규모기업용응용을위한 Java EE로나누어진다. 자바프로그램을개발하고실행하기위한환경은 JDK에서제공하며, IDE 환경을제공하는도구에는이클립스가있다. 자바에서제공하는 API는 에서온라인으로참조할수있다. 자바프로그램은클래스정의로시작하며, 클래스내에서모든변수나메소드를정의한다. 실행은 main() 메소드부터시작한다. 하드웨어독립적인바이트코드와이를실행하는자바가상기계에의해한번프로그램을작성하면어느플랫폼에서도자바프로그램을실행시킬수있는데, 이를 WORA(Write Once Run Anywhere) 라고한다. 자바소스파일의확장자는.java이며자바컴파일러에의해컴파일된파일은클래스파일로서확장자는.class이다. 자바컴파일러에의해컴파일된코드를바이트코드 (byte code) 라고부른다. 이코드는자바가상기계상에서실행되는코드로서특정 CPU에의존적이지않기때문에 WORA를실현하는데기여한다. 하나의클래스파일에는반드시하나의자바클래스가포함되어있다. 자바응용프로그램은웹클라이언트, 서버, 웹스타트, 데스크톱, 모바일등과같이광범위한분야에서사용되고있다. 자바언어는객체지향, 멀티스레드, 캡슐화, 플랫폼독립성, 패키지등을지원한다. 다수의클래스파일로자바응용프로그램이구성된경우에 jar 파일형태로압축하여배포및실행이가능하다.

53 CHAPTER 제1장자바시작 1 53 Open Challenge 가위바위보게임 화면에자신의이름, 나이, 학과등의정보를출력하는자바응용프로그램을작성해보자. 이클립스를실행하고프로젝트를만들어라. 클래스이름을 MyInfoApp로하면MyInfoApp.java 파일로자동저장된다. 이프로그램을실행하면다음과같이출력된다.

54 54 JAVA 자바프로그래밍 JAVA PROGRAMMING 연습문제 EXERCISE 이론문제 1. C 언어소스파일의확장자는.c이고컴파일하면.obj 파일이된다. 그러면자바소스파일의확장자와컴파일된파일의확장자는무엇인가? 2. 자바언어를처음개발한목적은무엇이었는가? 3. 자바의특징은 WORA 라고말할수있다. WORA 의목적은무엇인가? 4. 다음중에서틀린것은무엇인가? 1 자바의클래스파일은바이트코드이다. 2 자바의클래스파일은자바가상기계가설치된어떤곳에서도실행된다. 3 자바는링크과정없이컴파일러가바로바이트코드를생성한다. 4 자바가상기계는오직선마이크로시스템사에서만들어배포한다. 5. JDK와 JRE는어떤차이가있는가? 만일자바응용프로그램을개발하고자한다면이둘중어떤것이필요한가? 6. 자바언어로만들수있는응용프로그램의종류를나열하라. 그리고각각의특징을설명하라. 7. 다음중자바의특징이잘못설명된것을모두골라라. 1 객체지향언어이다. 2 하나의소스파일에여러개의클래스를작성할수있다. 3 하나의클래스파일에다수의클래스를포함할수있다. 4 멀티스레드를지원한다. 5 플랫폼에독립적이다. 6 클래스는캡슐화를위한것이다. 7 패지키의목적은자바응용프로그램을판매하기쉽게하기위해서이다.

55 CHAPTER 제1장자바시작 다음코드는하나의소스파일에저장된다. (1) 이소스파일의이름은무엇인가? (2) 이소스파일이컴파일되면어떤클래스파일이생성되는가? public class A {... class B {... } } class C {... class D {... } } 9. 다음자바소스프로그램을저장할때적절한파일이름은? public class Add { public static void main(string [] args) { System.out.println( Add ); } }

56 56 JAVA 자바프로그래밍 JAVA PROGRAMMING 실습문제 1. 화면에 Welcome!! 을출력하는자바프로그램을작성하라. 이클립스를이용하고, 작업공간 (workspace) 은 C:\Temp로하고, 프로젝트이름은 1-1로한다. 클래스이름은 Welcome으로한다. 2. 화면에 Sorry~~ 을출력하는자바프로그램을작성하라. 이클립스를이용하고, 작업공간 (workspace) 은 C:\Temp로하고, 프로젝트이름은 1-2로한다. 클래스이름은 Sorry로한다.

57 JAVA PROGRAMMING 찾아보기 가비지 194, 203, 204 가비지컬렉션스레드 206, 662 가비지컬렉터 203, 206 가상키 521, 522 가지비컬렉션 206 값 369, 389, 823 강제타입변환 73, 74, 259 객체 174 객체배열 181 객체소멸 202 객체지향 49 객체지향데이터베이스 823, 824 객체지향언어 19, 49, 168 객체지향프로그래밍 170 객체치환 193 경량컴포넌트 455 고급언어 19 관계 823 관계형데이터베이스 823, 824, 834 구글 48 구분문자 350 구체화 370, 399 기계어 19 기본생성자 198, 254 기본타입 66 기업용배포판 30 나열 135, 136 날짜 356 내부클래스 50, 511 내장형시스템 21 논리연산자 87 논리타입리터럴 71 다운캐스팅 259, 260 다이얼로그 714 다중 if 문 96 다중상속 244, 287 다차원배열 138 다형성 173 대입연산자 89 데몬스레드 662 데스크톱응용프로그램 45, 752 데이터타입 66 데이터베이스 822 도메인이름 787 도형그리기 612 도형칠하기 615 동기화객체 665 동적바인딩 266, 268, 274, 277 드라이버클래스파일 840 드래깅 706 디어셈블 23 디폴트 185 디폴트생성자 198 디폴트패키지 322 라디오버튼 567 라디오버튼컴포넌트 567 라운드로빈 665 런타임오류 150 레이블컴포넌트 553 레코드 823, 832 레코드추가 836 레퍼런스 66, 177 레퍼런스배열생성 181 레퍼런스변수 129, 130, 178 레퍼런스타입 66 로컬문자집합 427 리스너인터페이스 503 리스트컴포넌트 578 리터럴 68 리턴타입 185 링크 26, 27 마이크로소프트 823 멀티스레드 49, 674 멀티스레딩 646 멀티태스킹 644 멀티프로세싱 646 메뉴 467, 700 메뉴아이템 467, 700 메뉴바 463, 467, 700 메소드 60, 171, 177, 185 메소드오버라이딩 266, 270, 277 메소드오버로딩 189, 277 메소드이름 185 메소드중복 189 메소드코드 185 메소드호출 60 메시지다이얼로그 727 메인스레드 666 명령행인자 146 모달 720, 725 모달리스 720 모바일응용프로그램 47 모바일용배포판 30 무한반복 116, 121, 122 문자버퍼스트림 437 문자스트림 417, 427, 809 문자집합 428, 430 문자타입리터럴 70 문자열 67 문자열레이블 554 문자열리터럴 71 문자열체크박스 562 문장 62

58 찾아보기 801 바이너리데이터 421 바이너리코드 23 바이너리파일복사 446 바이트버퍼스트림 437 바이트스트림 417, 421, 809 바이트코드 23, 49 박싱 338 반복문 114 배열 128 배열리턴 143 배열생성 129, 130 배열선언 129, 130 배열참조 131 배열에대한레퍼런스선언 181 배치관리자 470 배치관리자제거 484 배포판 29 버튼그룹 567, 568 버튼컴포넌트 556 버퍼 436 버퍼스트림 436, 809 버퍼입출력 436 변수선언 60, 67 보안 754, 770 부모클래스 172 블록 62 비교연산자 87 비정방형배열 138, 140 비트연산자 84 산술연산자 82 삼항연산자 91 상속 172, 240 상수 72, 225 생명주기 168, 753 생성자 176, 195, 196, 252 서버 801 서버소켓 801, 804, 809 서브클래스 172, 241 서블릿 46 서비스관리자 832 소멸자 202 소스파일의확장자 19 소켓 800 소프트웨어 18 소프트웨어의재사용 168 손잡이 587 수직슬라이더 587 수직정렬 559 수평슬라이더 587 수평정렬 559 슈퍼클래스 172, 241 스레드 644, 645 스레드객체생성 652 스레드동기화 674, 676 스레드스케줄링 649 스레드시작 652 스레드종료 668 스레드코드 652, 662 스윙애플릿 754, 763 스윙컨테이너 461 스케쥴링 646 스크롤바 575 스키마 824 스트림 416 스트림연결 419 스트링리터럴 341 슬라이더 587 슬라이더컴포넌트 587 시간 356 시프트연산자 85 식별자 63 실수타입리터럴 69 실행파일 26 안드로이드 48 애플릿 45, 752, 754 애플릿응용프로그램 45 애플릿뷰어 761 애플릿의생명주기 755 앱 18 어댑터클래스 515 어셈블리어 19 언박싱 338 업캐스팅 259, 260, 261 연산자 81 연산자우선순위 81 열 138, 823, 834 예약어 64 예외 150 예외처리 151 오디오클립 771 오라클 21, 823 오류메시지 255 오버라이딩 276 오버로딩 276 오브젝트데이터베이스 824 오크 21 오픈소스 29 우선순위 81, 665 웹브라우저 45 윈도우서비스 829 유니코드 66, 427, 520, 844 유니코드키 519 이미지그리기 617 이미지레이블 554 이미지아이콘 557 이미지체크박스 562 이벤트 496, 498 이벤트객체 499, 500 이벤트기반프로그래밍 496 이벤트리스너 496, 499 이벤트분배스레드 498, 499 이벤트소스 498, 499, 506 이벤트처리스레드 470 이스케이프시퀀스 70 이클립스 33, 39, 147, 315 익명클래스 512, 513 인덱스 128, 132, 133 인스턴스 174, 279 인스턴스멤버 216 인자전달방식 186 인터페이스 284, 291 인터페이스구현 287 인터페이스상속 286 일차키 823 임계영역 676, 678 입력다이얼로그 725 입력스트림 416 자동박싱 339, 370, 379 자동언박싱 339, 377, 379 자동타입변환 73 자바 API 324 자바가상기계 22, 25, 48, 50, 648

59 802 찾아보기 JAVA PROGRAMMING 자바서블릿 46 자바스레드 648, 649 자바인터페이스 285 자바컴파일러 29 자바키워드 64 자바표준배포판 29 자식클래스 172 자원이름 789, 791 작업공간 39 잘알려진포트 788 전역변수 217, 221 전역함수 221 절차지향언어 19, 168 절차지향프로그래밍 169 접근지정자 59, 185, 208, 248 정방형배열 140 정수타입리터럴 69 정적바인딩 277 제네릭 368, 369 제네릭메소드 403 제네릭클래스 399 제네릭타입 370 제어판 832 제임스고슬링 20 조건연산자 91 조건문 93 조건식 93, 115, 119, 121 주석문 61 중량컴포넌트 454 중첩반복 123 증감연산자 89 지역변수 117 체크박스컴포넌트 561, 564 초기툴팁출력지연시간 712 최상위컨테이너 461 추상메소드 278, 503 추상클래스 279, 291 출력스트림 416 캐스팅 259 캡슐화 50, 170, 221 컨테이너 369, 460, 461 컨텐트팬 463, 467 컬러다이얼로그 737 컬렉션 368 컴파일 19 컴파일오류 150, 280 컴파일러 19 컴포넌트 461, 602 코드의재사용 172 콤보박스 583 콤보박스컴포넌트 582 클라이언트 801 클라이언트소켓 801, 802, 809 클래스 37, 59, 171, 174 클래스멤버 216 클래스파일 25, 26, 50 클리핑 625 클리핑영역 625 클리핑영역설정 626 키 369, 389, 823 타이틀 466 타이틀달기 466 타입매개변수 369, 370, 399, 400 타입변환 73 탭 740 탭팬 740 테이블 823, 832, 834 텍스트영역컴포넌트 575 텍스트파일 421 텍스트파일복사 444 템플리트 370 토큰 350 툴바 706 툴팁 710, 712 툴팁시간제어 712 툴팁활성화 712 특수문자리터럴 70 파라미터 766 파일다이얼로그 730 파일열기다이얼로그 730 파일저장다이얼로그 730, 734 파일필터 731 파일의끝 422 팝업다이얼로그 725 패키지 32, 51, 308, 309 포커스 518 포트 787, 788 포트번호 791 표준설정 829 표준패키지 325 프레임 464 프로그래밍언어 19 프로그램 18 프로젝트 41 프로토콜식별자 789, 790 플랫폼 21 플랫폼독립성 49 플랫폼독립적 21 플랫폼종속성 22 피연산자 81 필드 171 하드웨어 18 해시맵 389 핸들 706 행 138, 823, 834 호스트이름 791 확인다이얼로그 726 흐름도 169 Abs(double a) 354 abstract 278, 279 abstract class 279 abstract method 278 accept() 801, 804, 807 Action 이벤트 556, 576, 585, 704 ActionListener 503, 704 actionperformed() 506 Activity 754 Adapter 515 add() 375, 383, 467, 474, 476, 701 add(e element) 374, 382 add(int index, E element) 374, 382 addactionlistener 506, 507 addfocuslistener() 507 additem() 583 addkeylistener() 520 addmouselistener() 507 addtab() 741 AdjustmentEvent 502 AIFF 771

60 찾아보기 803 alt 속성 758 Android 48 anonymous class 512 append(string str) 348 append(stringbuffer sb) 348 applet 45, 754 appletviewer 32 appletviewer.exe 761 ArithmeticException 153 ArithmeticException 예외 151 array 128 ArrayIndexOutOfBoundsException 153 ArrayList<E> 369, 381 assembly language 19 AU 771 audio clip 771, 774 auto boxing 339, 370, 379 auto unboxing 339, 379 AWT 454 AWT 애플릿 754, 759 AWT 컨테이너 460 AWT 컴포넌트 454 BinarySearch() 396 bitcount(int i) 336 BLOCK 664 Boolean 335 BorderLayout 472, 473, 477, 707 boxing 338 break 124 break 문 100, 124, 125 Buffered I/O 436 Buffered Stream 436 BufferedInputStream 437 BufferedOutputStream 437 BufferedReader 437 BufferedWriter 437 ButtonGroup 568 Byte 335 byte code 23 Calendar 356 Calendar 클래스 356 call-by-value 186 capacity() 348, 374, 377 CardLayout 472, 485 case 문 99, 102 casting 259 catch 152 ceil(double a) 354 ChangeEvent 590 ChangeListener 590 Character 335 charat() 344 charat(int index) 342 class 171, 176, 328, 840 class file 25 ClassCastException 153 ClassNotFoundException 840 CLASSPATH 313 classpath 314 classpath 옵션 314 CLASSPATH 환경변수 313 clear() 374, 382, 384, 390 Clet 754 cliprect 626 clone() 327, 422, 423, 425, 434, 803 CLOSED_OPTION 726 code 속성 757 codebase 속성 758 codepointat(int index) 342 collection 368, 396 Color 609 column 823 command line argument 146 Comparable 398 compareto() 343 compareto(string anotherstring) 342 compiler 19 Component 459, 461 ComponentAdapter 516 ComponentEvent 502 concat() 344 concat(string str) 342, 343 connect() 795, 798 Connection 객체 840 constructor 176 Container 460 ContainerAdapter 516 ContainerEvent 502 contains(charsequence s) 342 contains(object o) 374, 382 containskey(object key) 390 containsvalue(object value) 390 Content Pane 463 continue 124 continue 문 124 cos(double a) 354 counttokens() 352 create 명령 835 critical section 676 Daemon thread 662 Dalvik 48 data type 66 database 822 DataBase Management System 823 DataInputStream 421 DB2 823 DBMS 823, 831 default 212, 249 default constructor 198 default package 322 default 문 100 delete 명령 838, 839 delete 문 847 delete() 441 delete(int start, int end) 348 delimeter 350 destroy() 755, 756, 759, 763 destructor 202 disassemble 23 DNS 787 do-while 문 114, 120 doinput 796 Domain Name Server 787 dooutput 796 Double 335 downcasting 259, 260 drawarc 614 drawimage() 619, 620 drawline() 612 drawoval() 612 drawpolygon 614 drawrect() 604, 612

61 804 찾아보기 JAVA PROGRAMMING drawroundrect() 612 DriverManager 840 dynamic binding 268 Eclipse 33 elementat() 376, 384 elementat(int index) 374, 382 embedded system 21 Encapsulation 50, 170 enum 136 EOF 422 equals() 330, 331 equals(object obj) 327 ERROR_MESSAGE 727 escape sequence 70 Event Dispatch Thread 470, 498, 499 event listener 496, 499 EventObject 500 Exception 150 executequery() 842 executeupdate() 842, 847 exists() 441 exit 469 exp(double a) 354 extends 243, 287 False 71 field 171 File 440, 441 file filter 731 File 클래스 440, 441 FileInputStream 419, 421 FileNameExtensionFilter 731 FileOutputStream 419, 424 FileReader 419, 428 FileWriter 419, 433 fillarc() 615 fillrect() 615 final 72, 225, 226 final 메소드 225 final 클래스 225 final 필드 225 finally 152 Float 335 floatvalue() 336 FlowLayout 471, 473, 474, 475 flush() 425, 439, 803, 805, 808, 810 FocusAdapter 516 FocusEvent 502 Font 609 for 문 114, 115 for-each 문 135, 136 forname() 840 FTP 788 Garbage 194, 203, 204 garbage collection 206 garbage collector 203, 206 gc() 206 generic type 370 generics 368, 369 GET 797 get() 356, 376, 384, 389, 390 get(int index) 374, 382 get(object key) 390 getbutton() 501, 531 getclass() 327, 328 getclickcount() 501, 530 getencoding() 434 getinputstream() 796, 802, 804 getinstance() 356 getkeychar() 521, 522 getkeycode() 521, 522 getkeytext() 523 getname() 328, 441 getoutputstream() 802, 804 getparameter() 766 getpath() 441 getpoint() 501, 530 getselectedindex() 585 getselecteditem() 585 getsource() 501, 506 getx() 501, 530 gety() 501, 530 Google 48 GPL 29 Graphics 603, 606, 607 GridLayout 472, 481 GUI 454 GUI 컴포넌트 454 HashCode() 327, 328 HashMap<K, V> 369, 389 HashSet<E> 369 hasmoretokens() 352 hasnext() 387 heavy weight component 454 height 속성 758 HTTP 788, 790 IBM 823 IDE 33 identifier 63 if 문 93 if-else 문 95 IllegalArgumentException 153 Image 객체 619 ImageIcon 554, 617 implements 287 import 32, 311, 312, 325, 462, 471 index 128 indexof(object o) 374, 382 infinite loop 116 Inheritance 172 init() 753, 755, 756, 759, 763 innner class 50 InputStream 793 InputStreamReader 430 insert 명령 836 insert 문 847 instance 174 instanceof 261, 262 int parseint(string s) 336 int parseint(string s, int radix) 336 Integer 335 interface 284, 285 interrupt() 668 InterruptedException 669 intvalue() 336 IOException 153 IP 786, 787 IP 버전 787 IP 주소 786 ipconfig 787 isdirectory() 441, 442 isempty() 374, 382, 390

62 찾아보기 805 isfile() 441, 442 ISO , 847 Item 이벤트 564, 570, 585 ItemEvent 502 ItemListener 564 itemstatechanged 564 itemstatechanged() 564, 570 iterator() 387 Iterator<E> 387 JApplet 754, 763 jar 32 java 32, 38 Java Development Kit 324 Java EE 30 Java ME 30, 47 Java Run-time Environment 29 Java SE 29 java servlet 46 java.awt 326 java.io 326 java.lang 325, 327, 335 java.lang.object 244, 245 java.net 791, 802 java.util 326 java.util.random 354 javac 32, 38 javadoc 32 javap 32 JButton 556 JCheckBox 561 JColorChooser 737 JComboBox 578, 582 JComponent 459, 461, 548 jdb 32 JDBC 824, 831 JDBC 드라이버 825, 831, 840 JDBC 매니저 825 JDBC 프로그래밍 840 JDialog 714 JDK 23, 31, 324, 831 JDK , 370, 375, 468 JDK JFileChooser 730 JFrame 463, 464 JLabel 553 Jlet 754 JList 578 JMenu 700, 701 JMenuBar 700, 701 JMenuItem 700, 701 JOptionPane 725 JPanel 604 JRadioButton 567, 570 JRE 29, 31, 325, 831 JScrollPane 575, 576, 578 JSlider 587 JTabbedPane 740 JTextArea 575 JTextField 573 JToolBar 706 JVM 22, 649 Key 823 Key 이벤트 518 KeyAdapter 516 KeyEvent 502 KeyEvent 객체 521 keypressed() 519, 520 keyreleased() 519, 520 keyset() 390 keytyped() 519, 520 KSC LastModified() 441 Layout Manager 470 length 134 length 필드 134, 141, 148 length() 342, 441 life cycle 168 light weight component 455 link 26 LinkedList<E> 369, 396 list() 441, 442 listfiles() 441 localhost 787, 809 Long 335 longvalue() 336 loop() 772 Machine language 19 main 스레드 469, 666 main() 145, 465, 645 main() 메소드 37, 59, 145, 146, 465 majortickspacing 588 MalformedURLException 792 Math 353 Math 클래스 353 max() 396 max(double a, double b) 354 method 171, 177 method overloading 189 method overriding 266 MIDI 771 Midlet 754 min() 396 min(double a, double b) 354 minortickspacing 588 mkdir() 441 modal 720 modeless 720 Mouse 이벤트 529 MouseAdapter 515, 516 mouseclicked() 529 mousedragged() 529 MouseEvent 502 MouseListener 503, 529 MouseMotionAdapter 516 MouseMotionListener 529 mousemoved(mouseevent e) 529 mousepressed() 529 mousereleased() 529 MouseWheelEvent 535 MouseWheelListener 535 MS , 431 multi-processing 646 multiple inheritance 244 multitasking 644 MySQL 823, 826, 831, 832 MySQL Server 828 MySQL 명령행 829 MySQL 서버 829, 830, 832 mysql.exe 834 mysqladmin.exe 833 Name 속성 765

63 806 찾아보기 JAVA PROGRAMMING nested loop 123 new 130, 178, 196, 202, 204, 663 newaudioclip() 771, 774 next() 79, 387 nextbyte() 79 nextdouble() 79 nextfloat() 79 nextint() 79 nextline() 79 nextlong() 79 nextshort() 79 nexttoken() 352 non-deamon thread 662 non-static 215 notify() 327, 663, 682 notifyall() 327, 663, 682 NO_OPTION 726 null 376, 383, 391 null 리터럴 71 NullPointerException 153 NumberFormatException 153 NumberFormatException 예외 768 Oak 21 object 174, 327 object database 824 object oriented database 823 Object 클래스 244 openconnection() 795 openstream() 792, 793 Oracle 823 orientation 587 OutOfMemoryException 153 OutputStream 424 overloading 276 overriding 276 Package 32, 309 package-private 212 paint() 755, 759 paint(graphics g) 628 paintborder(graphics g) 628 paintchildren(graphics g) 628 paintcomponent() 602, 755, 763 paintcomponent(graphics g) 628 parseboolean() 337 parsefloat() 337 parseint() 337 platform 21 platform dependence 22 platform independent 21 play() 771 Polymorphism 173 port 788 POST 797, 798 primary key 823 private 185, 210, 249 project 41 protected 185, 211, 249 public 59, 176, 185, 210, 249 put() 389, 390 put(k key, V value) 390 Random() 354 read() 422, 423 Reader 419 record 823 relation 823 relational database 823 remove() 377, 384, 387, 391 remove(int index) 374, 382 remove(object key) 390 remove(object o) 374, 382 removeallelements() 374, 377 removeallitems() 583 removeitem(object obj) 583 removeitemat(int index) 583 renameto(file dest) 441 repaint() 630 replace 342, 348 requestfocus() 519 reserved word 64 ResultSet 844 ResultSet 클래스 842 reverse() 348, 396 rint() 354 rint(double a) 354 RMF 771 round robin 665 round() 354 round(double a) 354 row 823 rt.jar 310, 325 run() 652, 653 Runnable 655 RUNNABLE 663 Runnable 인터페이스 655 Scanner 76, 311 Scanner 클래스 76, 78 select 명령 837 select 문 843 separator 707 ServerSocket 801, 804, 805 ServerSocket 클래스 804 Servlet 46, 754 set() 356, 357 setclip 626 setdefaultcloseoperation 469 setdismissdelay(int mills) 712 setdooutput() 798 seteditable 575 setenabled(boolean b) 712 setfilefilter() 732 setfocusable() 519 setfont 575 sethorizontalalignment 559 setinitialdelay(int mills) 712 setjmenubar() 701 setlayout() 473, 484 setlength(int newlength) 348 setmajortickspacing 589 setmaximum 589 setminimum 589 setminortickspacing 589 setorientation 589 setpaintlabels 589 setpaintticks 589 setpainttrack 589 setselected() 564, 570 setsize 464 settext 575 settitle() 467 settooltiptext(string msg) 710 setvalue 589

64 찾아보기 807 setverticalalignment 560 setvisible 464 Short 335 shortvalue() 336 showconfirmdialog() 726 showdialog() 737, 738 showinputdialog() 725 showmessagedialog() 727 showopendialog() 732, 733 showsavedialog() 734 sin(double a) 354 size() 374, 377, 382, 390, 391 sleep() 653 Socket 800, 801, 802, 803, 804 sort() 396 specialization 399 split() 350 split(string regex) 342 SQL 824 SQL Server 823 sqrt(double a) 354 Stack<E> 369 Standard Configuration 829 start() 652, 653, 753, 755, 759, 763 statechanged 590 Statement 클래스 842 static 215 static 메소드 222 static 멤버 216 stop() 755, 756, 759, 763, 772 Stream 417 String 340 String tobinarystring(int i) 336 String tohexstring(int i) 336 String tooctalstring(int i) 336 String tostring(int i) 336 String value = dic.get(key); 393 String 클래스 67, 71, 340 StringBuffer 347 StringBuffer 클래스 347 StringTokenizer 350 StringTokenizer 클래스 350 Structured Query Language 824 sub class 172, 241 substring(int beginindex) 343 super 274 super class 172, 241 super() 256, 257 super.paintcomponent() 604 Swing 454 Swing 컴포넌트 454 switch 문 99 synchronized 678 System.exit(0) 153 System.gc() 206 System.in 76 Tab 740 tan(double a) 354 TCP 786, 800 TCP 프로토콜 786 Telnet 788 template 370 TERMINATED 664 TextEvent 502 this 191, 192, 193, 222 this() 200, 202 thread 644, 645 Thread Control Block 662 Thread Synchronization 676 Thread 클래스 651 TIMED_WAITING 663 toarray() 374, 382 token 350 tolowercase() 343 ToolTipManager 712 Top Level Container 461 tostring() 327, 329 touppercase() 343 track 588 trim() 343, 344 true 71 try 152 try-catch-finally 문 151 Unboxing 338 Unicode 66, 520 upcasting 259 update 명령 838 update 문 847 URL 789, 791, 797, 800 URL 클래스 791 URLConnection 795, 796, 797, 800 URLConnection 클래스 795 US-ASCII 431 Value 823 value 속성 765 Vector<E> 369, 373 Virtual Key 521 Wait() 327, 663, 682 WAITING 663 WAV 771 where 절 843 while 문 114, 118 width 속성 758 WindowAdapter 516 WindowEvent 502 windows service 829 WORA 22 workspace 39 Wrapper 335 Wrapper 클래스 335, 370, 379 Write Once Run Anywhere 22 write(int b) 425 write(int c) 434 Writer 419 YES_NO_OPTION 726 YES_OPTION 726 yield() 665 <applet> 태그 757, 765 <Enter> 키 518, 573 <param> 태그 765, 766 <Tab> 키 519 2차원배열 138

65 저자약력 황기태현한성대학교컴퓨터공학과교수서울대학교컴퓨터공학과박사서울대학교컴퓨터공학과석사서울대학교컴퓨터공학과학사비트교육센타센타장 IBM Watson Research Center 방문연구원 University of California, Irvine 방문교수 University of Florida 방문교수 김효수현터치타이프모바일지사장 / 한성대학교컴퓨터공학과겸임교수서울대학교컴퓨터공학과석사서울대학교컴퓨터공학과학사 LG전자선임연구원한국 Rational Software, 한국 Openwave Systems 근무 M-Systems 지사장 IKIVO 지사장 저자와의협의에의해인지를생략합니다. 명품 JAVA Programming < 개정판 > 황기태 김효수지음 경기도파주시문발동 파주출판도시대표전화 : (031) , FAX : (031) 홈페이지 : 초판발행 : 개 정 판 : 발 행 인 : 김승기 발 행 처 : 생능출판사 신고번호 : 제 호 신고일자 : I S B N : (93000) 파본및잘못된책은바꾸어드립니다. 이책을불법복사할경우저작권법에의해 5년이하의징역이나 5,000만원이하의벌금에처해질수있습니다. 정가 29,000 원

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 명품 JAVA Essential 1 2 학습목표 1. 컴퓨터가소프트웨어를실행하는범용계산기임을이해 2. 자바의출현배경과플랫폼독립성, WORA의개념이해 3. 자바가상기계와자바의실행환경이해 4. JDK와 JRE 등자바개발환경이해 5. 이클립스를이용한자바프로그램작성 6. 자바응용프로그램의종류와특징이해 7. 자바언어와자바플랫폼의특징이해 1 컴퓨터와소프트웨어 3 컴퓨터와프로그래머,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 명품 JAVA Essential 1 2 학습목표 1. 컴퓨터가소프트웨어를실행하는범용계산기임을이해 2. 자바의출현배경과플랫폼독립성, WORA의개념이해 3. 자바가상기계와자바의실행환경이해 4. JDK와 JRE 등자바개발환경이해 5. 이클립스를이용한자바프로그램작성 6. 자바응용프로그램의종류와특징이해 7. 자바언어와자바플랫폼의특징이해 컴퓨터와소프트웨어 3 컴퓨터와프로그래머,

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드]

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드] 자바란무엇인가? 기초사항 514760-1 2016 년가을학기 9/1/2016 박경신 1991년그린프로젝트 (Green Project) 선마이크로시스템즈의제임스고슬링 (James Gosling) 에의해시작 - 가전제품에들어갈소프트웨어를위해개발 목적 플랫폼호환성문제해결 기존언어로작성된프로그램은 PC, 유닉스, 메인프레임등플랫폼간에호환성없음 소스를다시컴파일하거나프로그램을재작성해야하는단점

More information

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드]

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드] 자바란무엇인가? 기초사항 514760-1 2017 년가을학기 8/28/2017 박경신 1991년그린프로젝트 (Green Project) 선마이크로시스템즈의제임스고슬링 (James Gosling) 에의해시작 - 가전제품에들어갈소프트웨어를위해개발 목적 플랫폼호환성문제해결 기존언어로작성된프로그램은 PC, 유닉스, 메인프레임등플랫폼간에호환성없음 소스를다시컴파일하거나프로그램을재작성해야하는단점

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 명품 JAVA Essential 1 2 학습목표 1. 컴퓨터가소프트웨어를실행하는범용계산기임을이해 2. 자바의출현배경과플랫폼독립성, WORA의개념이해 3. 자바가상기계와자바의실행환경이해 4. JDK와 JRE 등자바개발환경이해 5. 이클립스를이용한자바프로그램작성 6. 자바응용프로그램의종류와특징이해 7. 자바언어와자바플랫폼의특징이해 컴퓨터와소프트웨어 3 컴퓨터와프로그래머,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 1,..... @ 1 Green Project 1991 Oak Java 1995. 5 December '90 by Patrick Naughton, Mike Sheridan and James Gosling Embedded in various consumer electronic device 1992. 9. 3 Star 7 1993 www portability

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드]

Microsoft PowerPoint - java1-lecture1.ppt [호환 모드] 자바란무엇인가? 기초사항 514760-1 2019 년봄학기 3/6/2019 박경신 1991년그린프로젝트 (Green Project) 선마이크로시스템즈의제임스고슬링 (James Gosling) 에의해시작 - 가전제품에들어갈소프트웨어를위해개발 목적 플랫폼호환성문제해결 기존언어로작성된프로그램은 PC, 유닉스, 메인프레임등플랫폼간에호환성없음 소스를다시컴파일하거나프로그램을재작성해야하는단점

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

10장.key

10장.key JAVA Programming 1 2 (Event Driven Programming)! :,,,! ( )! : (batch programming)!! ( : )!!!! 3 (Mouse Event, Action Event) (Mouse Event, Action Event) (Mouse Event, Container Event) (Key Event) (Key Event,

More information

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 자바의개념이해및개발환경구축 배효철 th1g@nate.com 1 목차 프로그래밍언어란? 자바란? 자바개발환경구축 자바프로그램개발순서 주석및실행문 이클립스설치 2 목차 프로그래밍언어란? 자바란? 자바개발환경구축 자바프로그램개발순서 주석및실행문 이클립스설치 3 프로그래밍언어란? 프로그래밍언어의역할은? 사람과컴퓨터의대화도움 사람의언어와기계어사이에서다리와같은역할 고급언어와저급언어로구분

More information

9장.key

9장.key JAVA Programming 1 GUI(Graphical User Interface) 2 GUI!,! GUI! GUI, GUI GUI! GUI AWT Swing AWT - java.awt Swing - javax.swing AWT Swing 3 AWT(Abstract Windowing Toolkit)! GUI! java.awt! AWT (Heavy weight

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

PowerPoint Template

PowerPoint Template 1 장자바개발환경구축하기 자바의특징 단순하다. 포인터, 다중상속처럼 C++ 에서거의사용되지않거나이해하기어렵고혼동을일으킬수있는부분들을포함하지않고있다. 결과물의크기가작다는것을들수있다. 객체지향적이다. 캡슐화 (Encap-sulation), 상속성 (Inheritance), 다형성 (Polymorphism) 의세가지특징을가진다. 높은생산성과용이한유지보수를가능하게한다.

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

gnu-lee-oop-kor-lec10-1-chap10

gnu-lee-oop-kor-lec10-1-chap10 어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

Microsoft PowerPoint - 06-Chapter09-Event.ppt

Microsoft PowerPoint - 06-Chapter09-Event.ppt AWT 이벤트처리하기 1. 이벤트처리방식 2. 이벤트클래스와리스너 3. 이벤트어댑터 4. 이벤트의종류 이벤트 (Event) 이벤트 사용자가 UI 컴포넌트에대해취하는행위로인한사건이벤트기반프로그래밍 무한루프를돌면서사용자의행위로인한이벤트를청취하여응답하는형태로작동하는프로그래밍 java.awt.event 이벤트처리 AWT 컴포넌트에서발생하는다양한이벤트를처리하기위한인터페이스와클래스제공

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Chap7.PDF

Chap7.PDF Chapter 7 The SUN Intranet Data Warehouse: Architecture and Tools All rights reserved 1 Intranet Data Warehouse : Distributed Networking Computing Peer-to-peer Peer-to-peer:,. C/S Microsoft ActiveX DCOM(Distributed

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Chap12

Chap12 12 12Java RMI 121 RMI 2 121 RMI 3 - RMI, CORBA 121 RMI RMI RMI (remote object) 4 - ( ) UnicastRemoteObject, 121 RMI 5 class A - class B - ( ) class A a() class Bb() 121 RMI 6 RMI / 121 RMI RMI 1 2 ( 7)

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lab 4 ADT Design 클래스로정의됨. 모든객체들은힙영역에할당됨. 캡슐화 (Encapsulation) : Data representation + Operation 정보은닉 (Information Hiding) : Opertion부분은가려져있고, 사용자가 operation으로만사용가능해야함. 클래스정의의형태 public class Person { private

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

No Slide Title

No Slide Title 자바소개 이충기 명지대학교컴퓨터공학과 자바 (Java) 의정의 C++ 에기초한선 (Sun) 사에의해개발된프로그래밍언어 객체지향언어 인터넷과웹을위한프로그래밍언어 2 자바의재정의 최초의범용소프트웨어플랫폼 언어, 자바가상컴퓨터와클래스라이브러리와 API 들의집합으로구성 인터넷컴퓨팅을위한플랫폼 - 하드웨어와독립 - 확장성이있음 - 개방적임 3 자바의현재 널리채택되고보편적언어가됨

More information

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345]) Class Class, Collections 514770-1 2017 년봄학기 3/22/2017 박경신 클래스 (Class) 객체의속성과행위선언 객체의설계도혹은틀 객체 (Object) 클래스의틀로찍어낸실체 메모리공간을갖는구체적인실체 클래스를구체화한객체를인스턴스 (instance) 라고부름 객체와인스턴스는같은뜻으로사용 클래스구조 클래스접근권한, public 다른클래스들에서이클래스를사용하거나접근할수있음을선언

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

JDK이클립스

JDK이클립스 JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트

More information

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상 2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상  2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌 강의계획서. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 학점교 강사명교 강사전화번호 강의시간 시간강의실수강대상 E-mail. 교과목학습목표 차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌어나갈핵심기술의기초로프로그래밍에주목하고있다. 이에본교과목에서객체지향언어의기본개념을학습한후구조적프로그래밍언어와의차이점을학습한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

슬라이드 1

슬라이드 1 이벤트 () 란? - 사용자가입력장치 ( 키보드, 마우스등 ) 등을이용해서발생하는사건 - 이벤트를처리하는프로그램은이벤트가발생할때까지무한루프를돌면서대기상태에있는다. 이벤트가발생하면발생한이벤트의종류에따라특정한작업을수행한다. - 이벤트관련프로그램작성을위해 java.awt.event.* 패키지가필요 - 버튼을누른경우, 1 버튼클릭이벤트발생 2 발생한이벤트인식 ( 이벤트리스너가수행

More information

Microsoft PowerPoint - Introduction to Google Guava.pptx

Microsoft PowerPoint - Introduction to Google Guava.pptx 2012 년자바카페 OPEN 세미나 주제 : Introduction to Google Guava 2012. 6. 16 김흥래 hrkim3468@gmail.com Java Developer s Forum JavaCafe community 구아바???? Java Developer s Forum JavaCafe Community 소개 Google Core Library

More information

자바-11장N'1-502

자바-11장N'1-502 C h a p t e r 11 java.net.,,., (TCP/IP) (UDP/IP).,. 1 ISO OSI 7 1977 (ISO, International Standards Organization) (OSI, Open Systems Interconnection). 6 1983 X.200. OSI 7 [ 11-1] 7. 1 (Physical Layer),

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

11장.key

11장.key JAVA Programming 1 GUI 2 2 1. GUI! GUI! GUI.! GUI! GUI 2. GUI!,,,!! GUI! GUI 11 : GUI 12 : GUI 3 4, JComponent 11-1 :, JComponent 5 import java.awt.*; import java.awt.event.*; import javax.swing.*; public

More information

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 18 장이벤트처리 이번장에서학습할내용 이벤트처리의개요 이벤트 액션이벤트 Key, Mouse, MouseMotion 어댑터클래스 버튼을누르면반응하도록만들어봅시다. 이번장의목표 버튼을누르면버튼의텍스트가변경되게한다. 이벤트처리과정 이벤트처리과정 (1) 이벤트를발생하는컴포넌트를생성하여야한다. 이벤트처리과정 (2) 이벤트리스너클래스를작성한다.

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt AWT 컴포넌트 (1) 1. AWT 패키지 2. AWT 프로그램과이벤트 3. Component 클래스 4. 컴포넌트색칠하기 AWT GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함 윈도우프로그램만들기 간단한 AWT 프로그램 import

More information

초보자를 위한 자바 2 21일 완성 - 최신개정판

초보자를 위한 자바 2 21일 완성 - 최신개정판 .,,.,. 7. Sun Microsystems.,,. Sun Bill Joy.. 15... ( ), ( )... 4600. .,,,,,., 5 Java 2 1.4. C++, Perl, Visual Basic, Delphi, Microsoft C#. WebGain Visual Cafe, Borland JBuilder, Sun ONE Studio., Sun Java

More information

Microsoft PowerPoint - lec7_package [호환 모드]

Microsoft PowerPoint - lec7_package [호환 모드] Lecture 7: Package 패키지의선언 패키지의사용 JAR 파일 자바의언어패키지 2 연관된클래스나인터페이스를하나의단위로묶는방법 장점 여러개의클래스와인터페이스를하나의그룹으로다루는수단을제공 클래스이름사이의충돌문제를해결 패키지의종류 기본패키지 : java.lang, java.util, java.io, java.awt 사용자정의패키지 3 선언형태 package

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 그래픽사용자인터페이스 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 프레임생성 (1) import javax.swing.*; public class FrameTest { public static void main(string[] args) { JFrame f = new JFrame("Frame Test"); JFrame

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

5장.key

5장.key JAVA Programming 1 (inheritance) 2!,!! 4 3 4!!!! 5 public class Person {... public class Student extends Person { // Person Student... public class StudentWorker extends Student { // Student StudentWorker...!

More information

강의자료

강의자료 Copyright, 2014 MMLab, Dept. of ECE, UOS Java Swing 2014 년 3 월 최성종서울시립대학교전자전기컴퓨터공학부 chois@uos.ac.kr http://www.mmlab.net 차례 2014년 3월 Java Swing 2 2017-06-02 Seong Jong Choi Java Basic Concepts-3 Graphical

More information

Microsoft PowerPoint - EEL2 Lecture10 -Swing and Event Handling.pptx

Microsoft PowerPoint - EEL2 Lecture10 -Swing and Event Handling.pptx 전자공학실험 2 1 WEEK10: SWING AND EVENT HANDLING Fall, 2014 건국대전자공학부 Notice: 주별강의 / 실습 /HW 내용 2 Week Date 강의주제 Homework 실습과제 Handouts 1 09월 03일 Orientation Lab1 Lecture0 2 09월 10일 추석 3 09월 17일 Using Objects

More information

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java(  혹은   에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을 안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경

More information

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx) w w w. g b t e c. c o. k r 6 안드로이드 App 적용하기 115 1. 안드로이드개요 모바일 OS 의종류 - 스마트폰 : 스마트폰운영체제탑재 애플의 IOS(iPhone OS) - 아이폰, 아이패드, 아이팟터치 구글의안드로이드 - Nexus, 갤럭시 A, S, 모토로이, 시리우스,... MS 의윈도우모바일 ( 윈도우폰 7) - 옴니아 2,

More information

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

More information