Head First Series

개발 및 관리/Java 2013. 2. 5. 16:00 posted by HighLighter
반응형

 

아래는 저자의 책에 대한 서포트 페이지다.

책에 나와 있는 코드가 있다. JAVA SDK 1.7버전을 설치하구, 책(Head First Java)는 2004년에 출판된 책으로 공부를 하다 보니, Generic이라는 개념이 나와서 컴파일 과정에서 문제가 생겼다.

이유가 뭘까 찾아 보니, ArryaList, Vector, HashMap 과 같은 것에서 타입 정의에서 문제가 생겼다.

 

 

 

마지막 코드 치킨을 찾아보다, Vector 때문에 아래 페이지 코드를 참조하였다.

 

http://wickedlysmart.com/HeadFirst/HeadFirstJava/HeadFirstJavaIndex.html

 

Head First Series는 아래와 같이 있다. 본인이 보야 할 것들이다. 웹프로그래밍 경험이 없어서 공부를 많이 해야 한다. 하지만 DB에 대한 걱정이 덜해서 그나마 다행이다.

 

1. Head First HTML5 Programming - Not have it and To be
2. Head First HTML and CSS, 2nd Edition - Not have it and To be
3. Head First Design Patterns - Have it but To be
4. Head First Java - Done
5. Head First Servlets and JSP - Not have it and To be
6. Head First EJB - Not have it and To be

 

반응형

'개발 및 관리 > Java' 카테고리의 다른 글

String VS StringBuffer  (0) 2013.02.07
equlas() 메소드 오버라이딩  (0) 2013.02.07
RMI 예제  (0) 2013.02.05
서블릿 정리  (0) 2013.02.04
JAVA, 읽어 보야아 할 책들  (0) 2013.02.04

RMI 예제

개발 및 관리/Java 2013. 2. 5. 12:26 posted by HighLighter
반응형

 

 

1. 관련 파일

 

DayOfTheWeekService.java
다운로드

 

DiceService.java
다운로드

 

MiniMusicService.java
다운로드

 

Service.java
다운로드

 

ServiceBrowser.java
다운로드

 

ServiceServer.java
다운로드

 

ServiceServerImpl.java
다운로드

 

 

2. 작동 순서

1) 컴파일


javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes ServiceServer.java

javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes Service.java

javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes ServiceServerImpl.java

javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes ServiceBrowser.java

javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes DiceService.java

javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes DayOfTheWeekService.java

javac -d C:\Users\Administrator\HeadFirstJava\TestService\classes MiniMusicService.java

 

2) 스터브와 스켈레톤 생성

rmic ServiceServerImpl

//ServiceServerImpl.class 파일이 들어 있는 디렉토리에서 rmic 실행

 

3) rmiregistry 실행

rmiregistry

 

4) 서비스 시작

java ServiceServerImpl

 

5) 클라이언트 시작

java ServiceBrowser

 

cf. Head First Java p.599 ~ p.608

반응형

'개발 및 관리 > Java' 카테고리의 다른 글

equlas() 메소드 오버라이딩  (0) 2013.02.07
Head First Series  (0) 2013.02.05
서블릿 정리  (0) 2013.02.04
JAVA, 읽어 보야아 할 책들  (0) 2013.02.04
서블릿  (0) 2013.02.04

서블릿 정리

개발 및 관리/Java 2013. 2. 4. 17:06 posted by HighLighter
반응형

 

1. 서블릿은 HTTP(웹) 서버에서 돌아가는 자바 클래스다.

 

2. 서블릿은 웹 페이지를 통한 클라이언트와의 상호작용의 결과로 서버에서 돌아가는 코드로 쓰인다. 예를 들면, 클라이언트에서 웹 페이지 폼의 형태로 정보를 제공하면 서블릿에서는 그 정보를 처리하고 데이터베이스에 추가한 다음 그 내용을 확인해주는 답변 페이지를 보내줄 수 있다.

 

3. 서블릿을 컴파일하려면 servlet.jar 파일에 들어있는 서블릿 패키지가 필요하다. 서블릿 클래스는 자바 표준 라이브러리에 포함되어있지 않기 때문에 java.oracle.com에서 servlet.jar를 다운로드 받거나 서블릿 기능이 있는 웹 서버에서 복사해와야 한다.

 

4. 서블릿을 실행하려면 apache.org에서 제공하는 톰캣과 같은 서블릿을 실행시킬 수 있는 웹 서버가 필요하다.

 

5. 서블릿은 웹 서버에서 지정한 위치에 저장해야 하므로 서블릿을 실행시키기 전에 어디에 저장해야 하는지 알아야 한다. 서블릿을 지원하는 ISP에 웹사이트를 호스팅하고 있다면 ISP에서 어떤 디렉토리에 서블릿을 저장해야 하는지 알려 줄 것이다.

 

6. 일반적으로 서블릿을 만들 때는 HttpServlet을 확장하고 doGet()이나 doPost()와 같은 서블릿 메소드를 오버라이드한다.

 

7. 웹 서버에서는 클라이언트의 요청에 따라 서블릿을 시작하고 적당한 메소드(doGet() 등)를 호출한다.

 

8. 서블릿에서는 doGet() 메소드의 response 매개변수로부터 얻은 PrintWriter 출력 스트림을 받아서 적절한 응답을 돌려보낼 수 있다.

 

마지막으로, 서블릿과 JSP는 자바 언어에 표함된 것이 아니고 표준 확장(standard extension)으로 간주된다. 서블릿과 JSP를 돌리려면 서블릿, JSP가 지원되도록 설정된 웹 서버와 서블릿 '컨테이너'가 필요하다.

 

*****서블릿과 JSP에 대한 자세한 내용을 원한다면 '자바 서블릿 프로그래밍(한빛미디어)이나 '자바 서버 페이지'를 참고

 

*****EJB에 대한 자세한 내용을 원한다면 '엔터프라이즈 자바빈즈(한빛미디어)'와 Head First EJB를 참고

 

cf. Head First Java p.588

반응형

'개발 및 관리 > Java' 카테고리의 다른 글

Head First Series  (0) 2013.02.05
RMI 예제  (0) 2013.02.05
JAVA, 읽어 보야아 할 책들  (0) 2013.02.04
서블릿  (0) 2013.02.04
RMI  (0) 2013.02.04
반응형

 

Q)객체의 일생에서 상위클래스 생성자의 역할
 1. 추상 클래스에 대해 new 키워드를 사용할 수 없지만 추상 클래스도 상위클래스이기 때문에 구상 클래스의 인스턴스를 만들면 그 생성자가 실행된다.
 2. 생성자가 실행되면 바로 그 상위클래스 생성자를 호출하고, Object 클래스의 생성자에 다다를 때까지 상속의 사슬을 거슬러 올라가면서 각 상위클래스의 생성자를 호출한다.

 

TestHippo.java
다운로드

 

 

반응형
반응형

 

interface Nose {
 public int iMethod();
}

abstract class Picasso implements Nose {
 public int iMethod() {
  return 7;
 }
}

class Clowns extends Picasso { }

class Acts extends Picasso {
 public int iMethod(){
  return 5;
 }
}

public class Of76 extends Clowns {
 public static void main(String[] args) {
  Nose[] i = new Nose[3];
  i[0] = new Acts();
  i[1] = new Clowns();
  i[2] = new Of76();
  for(int x = 0 ; x < 3 ; x++) {
   System.out.println(i[x].iMethod() + " " + i[x].getClass());
  }
 }
}

 

------------------------------------------------------

 

cf. 8장 내용 정리


//p.240 - (8장 인터페이스와 추상 클래스)

public void go() {
 ArrayList al = new ArrayList();
 Dog d = new Dog();
 al.add(d);
 int indext = al.indexOf(d);
 Object o = al.get(index);
}

//p.244 - (8장 인터페이스와 추상 클래스)

Object o = al.get(index);
Dog d = (Dog) o:
d.roam();


if ( d instanceOf Dog) {
 Dog d = (Dog) o;
}


//p.252 - (8장 인터페이스와 추상 클래스)
interface - 모든 메소드를 추상 메소드로 만드는 것

public interface Pet {
 public abstract void beFriendly();
 public abstract void play();
}


public calss Dog extends Canine implements Pet {
 
 //Dog도 Pet이므로 Pet의 메소드를 반드시 구현해야 한다.
 public void beFriendly(){
  System.out.println("beFriendly()");
 }
 public void play() {
  System.out.println("play()");
 }

 // 일반적으로 오버라이드 하는 메소드
 public void roam() {
  System.out.println("roam()");

 }
 public void eat() {
  System.out.println("eat()");
 }
}


//p.254 - (8장 인터페이스와 추상 클래스)
한 클래스에서 인터페이스 여러 개를 구현할 수도 있다.

public class Dog extends Animal implements Pet, Saveable, Paintable { ... }


//p.255 - (8장 인터페이스와 추상 클래스)
한 클래스에서 인터페이스 여러 개를 구현할 수도 있다.
1. 클래스를 만들 때 인스턴스를 만들 수 없게 하고 싶다면 abstract 키워드를 사용한다.
2. 상속 트리에서 처음으로 나오는 구상 구사 클래스에서는 반드시 모든 추상 메소드를 구현해야 한다.
3. interface의 모든 메소드는 자동으로 public 메소드, abstract 메소드가 되기 때문에 interface를 구현하는 클래스에서는 interface에 들어 있는 모든 메소드를 구현해야 한다.
4. 자바 클래스에서는 부모(상위클래스)가 하나밖에 있을 수 없고 그 부모 클래스나 자식 클래스가 어떠해야 하는지를 정의하게 된다.
   그러나 interface는 여러 개를 구현할 수 있다.


//p.256 - (8장 인터페이스와 추상 클래스)
Object 클래스는 다음 함수를 같고 있다.
 equals()
 getClass()
 hashCode()
 toString()

 

반응형