'자바'에 해당되는 글 16건

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
관련 내용 : http://java.sun.com/developer/media/deepdivejdk7.jsp



JDK 7 버전이 릴리즈 된지 얼마 되지 않았다.

Host: Ed Ort, Senior Staff Information Engineer, Sun Microsystems
Guest: Danny Coward, Chief Architect for Client Software at Sun Microsystems

두 사람이 나누는 대담을 통해 JDK 7 에 깊이 빠져들어가보자.


JDK 7 : Top 5 New Features

#1 : Modularity
#2 : Multi-Language
#3 : New Garbage Collectors
#4 : Nio.2 File System APIs
#5 : Swing API Additions

#1 : Modularity
// Declaring that a class belongs to a module:
module M;
package P;

public class Foo {...}

//Defining a module in a module-info.java file

module M @1.0 {
requires N @2.1;
requires L @0.5;
}
Java SE 7 : Project Jigsaw
  • Low Level Modularity System in JDK 7
  • Breaking Up the JDK 7 Code
  • Packaging Format
  • Uses Java Language Modularity(JSR 294) // ㅡㅅ-);; JSR 은 뭐지?
http://openjdk.java.net/projects/jigsaw
http://jcp.org/en/jsr/detail?id=294

아래에 나오는 내용은 "Coin Project"란다.


String animal ="...";
   
    if ( animal.equals("dog")) {
        takeForWalk(animal);
    } else if ( animal.equals("cat")) {
        leaveMilkFor(animal);
    } else if ( animal.equals("mouse")) {
        cleanCageFor(animal);
    } else {
        leaveOutside(animal);
    }
※  JDK 7 에서는 switch 에서 case에 char 타입 이외에 String 타입도 사용이 가능하게 됩니다. 조건문이 쉬워지는군요.
    String animal = "...";
   
    switch(animal) {
    case "dog" : takeForWalk(animal);
    case "cat" : leaveMilkFor(animal);
    case "dog" : cleanCageFor(animal);
    default : leaveOutside(animal);
    }

※ Exception 처리
try {
        doWork(file);
    } catch ( IOException ioe ) {
        logger.log(ioe);
        throws ioe;
    } catch ( SQLException sqle ) {
        logger.log(sqle);
        throws sqle;
    }
  JDK 7 에서는 이렇게 가능하다. Ed Ort 씨 처럼 Ah~~ha~~!!
try {
        doWork(file);
    } catch ( final IOException | SQLException ex ) {
        logger.log(ex);
        throws ex;
    }

※ 다음은 Genericㄴ 사용법 : 아직 본인은 generics 사용법에 대해서 익숙하지 못하다. ㅡㅅ-);;;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
JDK 7 에서는 이렇게 된다고 한다. ㅡㅅ-)b
Map<String, List<String>> anagrams = new HashMap<>();

※ 다음은 Operator
Object anObject;
    ...
    if (anObject == null ) {
        s = "nothing";
    } else {
        s = anObject.toString();
    }
   
    int i;
    ...
    if ( anInteger == null ) {
        i = -1;
    } else {
        i = anIntegerr;
    }
JDK 7 에서는 이렇게 바뀐다고 한다. " ?:  " 요놈인 건데... ㅡㅅ-)> 요건 뭐가 좋은거지? ?: == null 인건가?
   String s = anObject?.toString() ?: "nothing";
    int i = anInteger ?:-1;


#2 : Multi-Language  : supporting non-Java languages at the VM level
JVM에서의 실행속도를 높인다는 건가? Bytecode를 역동적으로!? 메소드 핸들러를 가볍게!? 최적화를 변동적으로?
Broadening the JVM to Accelerate Runtimes
  • Bytecode for Dynamic Invocation
  • Lightweight Method Handles
  • A Variety Of Other Possible Optimizations
JRuby is the Pioneer
The DaVinci Project
http://openjdk.java.net/projects/mlvm

#3 : New Garbage Collectors - Garbage First,
Predictably Low Pauses + Few Full Garbage Collectors + Good Throughput
Greate for a Wide Variety of Application

#4 : Nio.2 File System APIs
DirectorySearchOperations 라는 클래스가 추가된 듯 하다. 자바로 새로운 파일 시스템을 사용해볼 기회가 있었어야 말이지..ㅡㅅ-);; 흠...
  • New Filesystem API File Notifications Directory Operations
  • Asynchronous I/O

#5 : Swing API Additions
  Java의 Swing API에 대한 불만은 여전히 있었고, ㅡㅅ-);; 추가되었다는 내용을 봐도 불만은 여전히 유지가 될 것 같다. 사용자가 필요에 따라서 자신이 디자인한 부분에 대해서 적용할 수 있도록 해주면 좋지 않을까? ㅡㅅ-)~ 현재 나는 조용히 쓰라는 대로 써야지. ㅎㅎ.
JSR 296 : Swing Application Framework
http://jcp.org/en/jsr/detail?id=296

JDK 7 과 관련된 홈페이지(MileStone)
JDK 7 Milestones Homepage
http://openjdk.java.net/projects/jdk7/milestones/
openJDK Project Homepage
http://openjdk.java.net/project/jdk7/
JDK 7 Project Homepage
https://jdk7.dev.java.net/
The Planetarium Blog
http://blogs.sun.com/theplanetarium/

허니몬의 사진기록
2009년 8월 14일(금) 오후에 발표가 있었습니다.
ㅡㅅ-);; 보시는 것처럼 피곤에 찌들어 초췌한 얼굴이 보이시나요? OTL... 마지막날이 제일 힘들었습니다. 흑흑 전날까지 코드 손보고, 늦게까지 시나리오 수정하고 외우느라 늦게 자고, 늦지 않으려고 일찍 일어나야 했거든요.

여전히 얼굴에는 피곤함이 가득 담겨 있습니다. 5개월의 교육과정 중에서 마무리를 짓는 시간이다 보니 나름 열과 성의를 다해서 했습니다. 다음에는 장인정신으로 코드를 만들어보겠습니다. ㅡㅅ-)b


작은 발표회였지만, 많은 사람들 앞에서 발표를 한다는 것은 살짝 긴장이 되더군요. 시간이 충분치 않아서 시나리오도 제대로 외우지를 못한 상황이라서 중간중간 많이 버벅거림이 있었습니다. ^^; 긴장은 안할래야 안할 수가 없더군요.


그래도 발표는 웃으면서!! +_+)b


오른손에는 컨닝페이퍼를 들고서(발표 하는 중간에도 까먹었다는... ㅡㅅ-);; 잽싸게 데이터를 입력하는 동안에 훑어보면서 다음 순서를 찾았습니닷!!). 화면을 보면서 설명을 드렸습니다. 나름 시나리오를 짜서 움직임이나 손동작을 구상을 했는데, 발표하는 중간에 살며시 머릿 속에서 지워져 나가더군요. 흠냠...


발표를 마치고 다른 사람이 발표하는 내용들이 다이어리에 적어두고 있습니다. 나중에 발표를 할 때 참고해두려고요... ^^; 앞으로 발표를 할 기회가 자주 있을 것 같아서 말이죠.


" 요렇게~? " 발표 중에 할 손동작들을 연습하며 웃어보고 있습니다. ^^;


이런 자세로 발표하면 안되겠죠? ^^;;


컨닝페이퍼를 보면서 연습하고 있습니다.


이렇게 프로젝트가 끝났습니다. 발표가 끝나고 기념촬영을 하러 밖으로 나갔습니다. 때마침 햇살이 좋아서... 멋지게 나왔군(?)요!! 잘 찍어준 덕분도 있겠지요. ^^;; 다른 이들의 사진을 같이 올려서 발표회 풍경을 보여드리려고 했던 애초의 의도에서 제 사진들로만 채우게 되었습니다. 다른 사람들에게 사진을 올려도 좋다는 동의를 얻지 못해서 말이죠. 그 점은 굉장히 죄송하게 생각을 합니다. ^^;; 이상 길다면 길었던 CJ정보기술교육센터에서의 5개월간의 교육이 끝났습니다.
  이제 18명의 수료생이 각자 자신의 길을 찾아서 떠나는 독립의 여정에 들어섰습니다. 모두의 행운을 빕니다. 무운이 함께하길 바랍니다.


허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
if ( keyword != null ) {
     String charset[] = {"euc-kr", "ksc5601", "iso-8859-1", "8859_1", "ascii"};
     
     for(int k=0; k<charset.length ; k++){
             for(int l=0 ; l<charset.length ; l++){
                     if(k==l){
                             continue;
                     }else{
                             System.out.println(charset[k]+" : "+charset[l]+" :"+new String(keyword.getBytes(charset[k]),charset[l])+"<br>");
                     }
             }
     }
   }

ㅡㅅ-);; charset 형만 알아내는 거지, 그거에 대한 반환타입이 없어서...
조건식에다가 쓸 수가 없잖아!!!

자바내에서는 받는 파라메타의 charset 이 무엇인지 알아내는 메소드는 없는 듯 합니다. ㅡㅅ-);;
위의 식은 받은 문자열(keyword)을 반복문을 돌려서 문자셋을 바꿔가면서 출력하는 코드입니다.

출력결과를 확인하고서 파라메터가 어떤 charset으로 들어오는지 확인하고서 거기에 맞춰서 처리를 해줘야 한다.
우리 프로젝트 처리를 진행하면서는 크게 쓸모는 없었다. 자바스크립트를 통해서 파라메터를 생성해서 받는 것은
ISO8895_1 타입으로 하는 걸 알고 있으니까, 특정 조건을 만족했을 때, 해당 파라메터를 인코딩하도록 만들어 처리했다.


선생님께 여쭈어 또다른 방법을 알아냈다. get 방식으로 파라메터를 전달하는 자바스크립트 방식일 경우에 유용하다.
예 : javascript:location.href="list.jsp?page=555&subpage=444  의 경우

          //searchform 폼에서 입력한 값이 있을 경우 넣어줄 것 불러오기
          if ((request.getMethod()).equalsIgnoreCase("get") && category != null && keyword != null ) {
              keyword = new String(keyword.getBytes("ISO8859_1"), "EUC_KR");
          }

request 의 method 방법을 알아내는 메소드(함수) getMethod() 를 이용해서 "get" 방식을 경우에 변환해주는 방법입니다.

또다른 방법은 <form method="post" action="">을 하나 만들어서 그 안에다가 <input type="hidden" name=""> 으로 해서  해서 form.submit() 방식으로 다음페이지에서 필요한 값들을 넘기는 방법이 있다.


AJAX 실행한 단계에서 다음 페이지에서는
equest.setCharacterEncoding("euc-kr"); 의 식으로 코딩을 지정해주면 글자가 깨진다는 점을 주의하라.


허니몬에 관한 보고서/허니몬의 드림성공노트

SCJP 자격증 도착. ㅡㅅ-)b 시험을 쉽게 생각했다가 한번 낙방하고, 정신 바짝 차려서 본 시험입니다.

ㅡㅅ-)> 뭐... 금장 두른 Sun의 마크와 카드가 나름 뿌듯하게 하네요. 생각은 안하고 있었는데 비교적 빨리 도착했습니다. ^^

시험을 보면서 생각한 것은 Generic 클래스와 상속에 대한 개념을 조금 더 명확하게 하자는 것입니다.

@_@) 지금은 프로젝트 진행중이라 별도로 자바만을 공부할 그런 시간이 없군요. 그게 아쉽네요!!

이로써 취업을 위한 스펙이 하나 완성된 셈입니다. 과연 이녀석이 얼마나 도움이 될지 미지수로군요!!
허니몬에 관한 보고서/허니몬의 물병편지

이 글은 허니몬님의 2009년 7월 21일의 미투데이 내용입니다.

1 2 3 4
블로그 이미지

Email : ihoneymon@gmail.com 안녕하세요, 꿀괴물 입니다. ^^ 멋진 비행을 준비 하는 블로그 입니다. 만능형 인간이 되어 많은 이들에게 인정받고, 즐겁고 행복하게 살기를 간절히 원합니다!! 달콤살벌한 꿀괴물의 좌충우돌 파란만장한 여정을 지켜봐주세요!! ^^

허니몬