ݺߣ

ݺߣShare a Scribd company logo
아키텍트를 꿈꾸는 사람들 양 창 선 3.  자바와 사용하기
Contents 시작 하며 장점 문법
자바를 몰라요 정의가  틀리 고  횡설수설 할 가능성 농후 이해 못해  넘어가는  부분도 다수 발표가 아니라 역으로  가르쳐 주셔야 할지도 .. 그래서 문법보다  정의위주 로 합니다 . 다 읽어 오셔서 아실 꺼라  믿습니다 . 나름 열심히 공부는 했어요 http://cafe.naver.com/happyzzx.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=9700
클로저의  자바 지원은 매우  강력 Lisp 의 표현력 과  자바 에 특화된  편리한 문법 을  동시 에 취할 수 있다는 점에서  강력 하다 . 자바와 자바  라이브러리 를 포용 해서  강력 하다 .
클로저의  자바 지원은 매우  간결 상호 작용에 군더더기가 없어  간결 하다 . 바이트 코드로 컴파일이 되며 별도의  계층을 거치지 않는다 . 자바코드를  LIsp 로 감싸지 않고  바로 접근  할 수 있다 .
클로저의  자바 호출 클래스 ,  인스턴스 ,  생성자 ,  메서드 ,  필드 등 어떤 자바 코드 에도 접근할 수 있다 . 간편한 문법 을 제공 자바 코드를 직접 호출하거나 ,  자바  API 를 함수형 스타일로 감싸서 사용하는 것도 가능 하다 .
자바 코드 접근 클래스 인스턴스 생성자 메서드  필드 간편한 문법
자바 코드 접근 클래스 인스턴스 생성자 (def  rnd (new java.util.Random))
자바 코드 접근 메서드    (.rnd nextInt 10) 필드   (. Math PI) 간편한 문법 (def  rnd (new java.util.Random))
클로저의  속도 자바 가상 머신에서 돌아가는 다른 동적 언어와 달리 ‘ 빠르다 ’ . 배열 이나  원시타입 (primitives),  타입 힌트  등 으로  자바 컴파일러가 생성한 것과  똑같은 코드 를 만들 수 있다 .
클로저의  속도 배열 원시타입 타입힌트
클로저의  속도 (make-arry String 5) //  직접선언 (int-array 5) //  원시타입 (to-array [ “AA” “BB” “CC” ]) //  가변길이 (into-array String [ “AA” “BB” “CC” ]) //  명시적타입 (def somestrings (into-array [“some" “string“ “here”]))  (seq (amap somestrings idx _ (.toUpperCase (aget strings idx))))  => ( “SOME” “STRING” “HERE” )  //  expr 이 적용된 배열을 반환한다 . 타입을 명시적 선언하면 자바와 똑같은 코드를 만들어 내기 때문에 속도가 빠르다 .
클로저의  자바 클래스 생성 자바 코드에서 클로저 코드 호출 가능 클로저에서 실행 중  동적 으로 자바 클래스 생성 가능 proxy 나  gen-and-save-class 를 통해
클로저의  자바 클래스 생성 proxy( 프록시 ) 자바와의 상호작용을 위해  자바 인터페이스 를  구현  하는 경우 필요 SAX(Simple API for XML )  파서를 가지고  XML  파싱 하기가 좋은 예다 . 먼저 필요한 클래스를  import  합니다 . (import  ‘(org.xml.sax InputSource) ‘(org.xml.sax.helpers DefaultHandler) ‘(java.io StringReader) ‘(javax.xml.parsers SAXParserFactory))
클로저의  자바 클래스 생성 SAX(Simple API for XML )  파서를 가지고  XML  파싱 하기 proxy 를 이용해  startElement 에 대한 모든 호출 내용을 출력하는  DefaultHandler 를 생성하는 예 (def print-element-handler   proxy [DefaultHandler]  //  수퍼클래스나 구현할 인터페이스들의 벡터   [] //  기본 클래스 생성자에 넘겨질 인자들의 벡터   (startElement  //  프록시 메서드구현 (Defaulthandler 은 하나 가지고 있다 )   [uri local qname atts] //  네 개의 인자를 받는다 , qname  이름을 출력   (println (format “Saw element: %s” qname))))) 만들어진 핸들러를 파서에 넘겨주자 .
클로저의  자바 클래스 생성 SAX(Simple API for XML )  파서를 가지고  XML  파싱 하기 REPL 에서 간단히 문자열로  XML 을 파싱하는 함수를 만들자 (defn demo-sax-parse [source handler] (.. SAXParserFactory newinstance newSAXParser (parse (InputSource. (StringReader. source)) handler)))
클로저의  자바 클래스 생성 SAX(Simple API for XML )  파서를 가지고  XML  파싱 하기 파싱 실행 (demo-sax-parse “<foo> <bar>Body of bar</bar> </foo>” print-element-handler) | Saw element: foo | Saw element: bar 자바의  XML  인터페이스를 다루는 클로저 프록시를 만드는 과정이  간단 하다는 것을 보여준다
클로저의  예외 처리 사용이 매우  쉽다 기본 단위는 자바와  완전히 같다 . with-open  같은  상용구 를 이용한다 . 예외 검사 와  자원 관리  등의 번거로운 일을 줄인다 . try 와  throw  만으로도 자바의  try,catch,finally,throw 를  대체  할 수 있다 . 검사되는 예외 를 꼭 처리하지 않아도 된다 .
클로저의  예외 처리 자바의 예외 처리 try{   newManifest = new Manifest®; } catch (IOException e) {   throw new BuildException(…); } 클로저에서는  검사되는 예외 를 처리 하지  않아도 된다 . (Manifest. r)
클로저의  예외 처리
Lancet 을 앤트 프로젝트와 테스크에 적용 http://blog.naver.com/hsjhp?Redirect=Log&logNo=10007634263
자바와 같이 일하기 정리 클로저는 자바를  직접 호출  할 수 있다 . 자바  클래스를 만들거나   인터페이스 구현  가능 클로저는  실용성 을 기초로 한다 자바 코드를 잘 쓰자 하지만 자바 컬렉션  API 는 상대적으로 쓰지말자 . 시퀀스 라이브러리 가 더  강력하고 스레드 세이프 하다
끝 http://cafe.naver.com/likecomics.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=5469

More Related Content

What's hot (20)

PPTX
More effective c++ 1
현찬 양
PPT
effective c++ chapter 3~4 정리
Injae Lee
PPTX
Effective c++ 4
현찬 양
PPTX
Effective c++ 정리 1~2
Injae Lee
PDF
More effective c++ chapter1 2_dcshin
Dong Chan Shin
PPTX
More effective c++ 3
현찬 양
PPTX
Effective c++ 1
현찬 양
PPTX
Effective c++ 2
현찬 양
PPTX
More effective c++ 2
현찬 양
PDF
Exception&log
Nam Hyeonuk
PDF
연산자 오버로딩
. Ruvendix
PDF
Java lambda
Hyosang Hong
PDF
클래스의 추가 지식
. Ruvendix
PDF
예외 처리
. Ruvendix
PDF
5 6 1
nexthw
PDF
More effective c++ 항목30부터
Dong Chan Shin
PPTX
C++ 2학기 수행평가
Jaehee Lee
PPTX
Effective C++ Chaper 1
연우 김
PDF
Java 이해하기 쉬운 코드 20210405
Hyosang Hong
PPTX
More Effective C++ 4주차
Injae Lee
More effective c++ 1
현찬 양
effective c++ chapter 3~4 정리
Injae Lee
Effective c++ 4
현찬 양
Effective c++ 정리 1~2
Injae Lee
More effective c++ chapter1 2_dcshin
Dong Chan Shin
More effective c++ 3
현찬 양
Effective c++ 1
현찬 양
Effective c++ 2
현찬 양
More effective c++ 2
현찬 양
Exception&log
Nam Hyeonuk
연산자 오버로딩
. Ruvendix
Java lambda
Hyosang Hong
클래스의 추가 지식
. Ruvendix
예외 처리
. Ruvendix
5 6 1
nexthw
More effective c++ 항목30부터
Dong Chan Shin
C++ 2학기 수행평가
Jaehee Lee
Effective C++ Chaper 1
연우 김
Java 이해하기 쉬운 코드 20210405
Hyosang Hong
More Effective C++ 4주차
Injae Lee

Similar to 자바와 사용하기2 (20)

PPTX
클로저 1
samagu0030
PDF
Java the good parts
Sungchul Park
PPTX
Ჹ1장.ٳ
ssuserdfc8b1
PPTX
Ჹ1장.ٳ
HeeJung Chae
PPTX
Ჹ1장
HeeJung Chae
PDF
Java tutorial
ssuser34b989
PPT
자바야 놀자 PPT
JinKyoungHeo
PPTX
4-1. javascript
JinKyoungHeo
PPTX
객체지향 프로그래밍 기본
용호 최
PPTX
Processing 기초 이해하기_20160713
Yong Joon Moon
PDF
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
PPTX
[자바카페] 자바 객체지향 프로그래밍 (2017)
용호 최
PDF
Java(1/4)
handfoot
PDF
Java programming pdf
Ji Hoon Lee
PPT
Ai C#세미나
Astin Choi
PPTX
Just java
Jong Wook Kim
PDF
Java_05 class
Hong Hyo Sang
PDF
Java class
Hyosang Hong
PPTX
[HaU] 신입 기술 면접 준비 java
유리 하
PPTX
Javascript
Joshua Yoon
클로저 1
samagu0030
Java the good parts
Sungchul Park
Ჹ1장.ٳ
ssuserdfc8b1
Ჹ1장.ٳ
HeeJung Chae
Java tutorial
ssuser34b989
자바야 놀자 PPT
JinKyoungHeo
4-1. javascript
JinKyoungHeo
객체지향 프로그래밍 기본
용호 최
Processing 기초 이해하기_20160713
Yong Joon Moon
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
[자바카페] 자바 객체지향 프로그래밍 (2017)
용호 최
Java(1/4)
handfoot
Java programming pdf
Ji Hoon Lee
Ai C#세미나
Astin Choi
Just java
Jong Wook Kim
Java_05 class
Hong Hyo Sang
Java class
Hyosang Hong
[HaU] 신입 기술 면접 준비 java
유리 하
Javascript
Joshua Yoon
Ad

자바와 사용하기2

  • 1. 아키텍트를 꿈꾸는 사람들 양 창 선 3. 자바와 사용하기
  • 2. Contents 시작 하며 장점 문법
  • 3. 자바를 몰라요 정의가 틀리 고 횡설수설 할 가능성 농후 이해 못해 넘어가는 부분도 다수 발표가 아니라 역으로 가르쳐 주셔야 할지도 .. 그래서 문법보다 정의위주 로 합니다 . 다 읽어 오셔서 아실 꺼라 믿습니다 . 나름 열심히 공부는 했어요 http://cafe.naver.com/happyzzx.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=9700
  • 4. 클로저의 자바 지원은 매우 강력 Lisp 의 표현력 과 자바 에 특화된 편리한 문법 을 동시 에 취할 수 있다는 점에서 강력 하다 . 자바와 자바 라이브러리 를 포용 해서 강력 하다 .
  • 5. 클로저의 자바 지원은 매우 간결 상호 작용에 군더더기가 없어 간결 하다 . 바이트 코드로 컴파일이 되며 별도의 계층을 거치지 않는다 . 자바코드를 LIsp 로 감싸지 않고 바로 접근 할 수 있다 .
  • 6. 클로저의 자바 호출 클래스 , 인스턴스 , 생성자 , 메서드 , 필드 등 어떤 자바 코드 에도 접근할 수 있다 . 간편한 문법 을 제공 자바 코드를 직접 호출하거나 , 자바 API 를 함수형 스타일로 감싸서 사용하는 것도 가능 하다 .
  • 7. 자바 코드 접근 클래스 인스턴스 생성자 메서드 필드 간편한 문법
  • 8. 자바 코드 접근 클래스 인스턴스 생성자 (def rnd (new java.util.Random))
  • 9. 자바 코드 접근 메서드 (.rnd nextInt 10) 필드 (. Math PI) 간편한 문법 (def rnd (new java.util.Random))
  • 10. 클로저의 속도 자바 가상 머신에서 돌아가는 다른 동적 언어와 달리 ‘ 빠르다 ’ . 배열 이나 원시타입 (primitives), 타입 힌트 등 으로 자바 컴파일러가 생성한 것과 똑같은 코드 를 만들 수 있다 .
  • 11. 클로저의 속도 배열 원시타입 타입힌트
  • 12. 클로저의 속도 (make-arry String 5) // 직접선언 (int-array 5) // 원시타입 (to-array [ “AA” “BB” “CC” ]) // 가변길이 (into-array String [ “AA” “BB” “CC” ]) // 명시적타입 (def somestrings (into-array [“some&quot; “string“ “here”])) (seq (amap somestrings idx _ (.toUpperCase (aget strings idx)))) => ( “SOME” “STRING” “HERE” ) // expr 이 적용된 배열을 반환한다 . 타입을 명시적 선언하면 자바와 똑같은 코드를 만들어 내기 때문에 속도가 빠르다 .
  • 13. 클로저의 자바 클래스 생성 자바 코드에서 클로저 코드 호출 가능 클로저에서 실행 중 동적 으로 자바 클래스 생성 가능 proxy 나 gen-and-save-class 를 통해
  • 14. 클로저의 자바 클래스 생성 proxy( 프록시 ) 자바와의 상호작용을 위해 자바 인터페이스 를 구현 하는 경우 필요 SAX(Simple API for XML ) 파서를 가지고 XML 파싱 하기가 좋은 예다 . 먼저 필요한 클래스를 import 합니다 . (import ‘(org.xml.sax InputSource) ‘(org.xml.sax.helpers DefaultHandler) ‘(java.io StringReader) ‘(javax.xml.parsers SAXParserFactory))
  • 15. 클로저의 자바 클래스 생성 SAX(Simple API for XML ) 파서를 가지고 XML 파싱 하기 proxy 를 이용해 startElement 에 대한 모든 호출 내용을 출력하는 DefaultHandler 를 생성하는 예 (def print-element-handler proxy [DefaultHandler] // 수퍼클래스나 구현할 인터페이스들의 벡터 [] // 기본 클래스 생성자에 넘겨질 인자들의 벡터 (startElement // 프록시 메서드구현 (Defaulthandler 은 하나 가지고 있다 ) [uri local qname atts] // 네 개의 인자를 받는다 , qname 이름을 출력 (println (format “Saw element: %s” qname))))) 만들어진 핸들러를 파서에 넘겨주자 .
  • 16. 클로저의 자바 클래스 생성 SAX(Simple API for XML ) 파서를 가지고 XML 파싱 하기 REPL 에서 간단히 문자열로 XML 을 파싱하는 함수를 만들자 (defn demo-sax-parse [source handler] (.. SAXParserFactory newinstance newSAXParser (parse (InputSource. (StringReader. source)) handler)))
  • 17. 클로저의 자바 클래스 생성 SAX(Simple API for XML ) 파서를 가지고 XML 파싱 하기 파싱 실행 (demo-sax-parse “<foo> <bar>Body of bar</bar> </foo>” print-element-handler) | Saw element: foo | Saw element: bar 자바의 XML 인터페이스를 다루는 클로저 프록시를 만드는 과정이 간단 하다는 것을 보여준다
  • 18. 클로저의 예외 처리 사용이 매우 쉽다 기본 단위는 자바와 완전히 같다 . with-open 같은 상용구 를 이용한다 . 예외 검사 와 자원 관리 등의 번거로운 일을 줄인다 . try 와 throw 만으로도 자바의 try,catch,finally,throw 를 대체 할 수 있다 . 검사되는 예외 를 꼭 처리하지 않아도 된다 .
  • 19. 클로저의 예외 처리 자바의 예외 처리 try{ newManifest = new Manifest®; } catch (IOException e) { throw new BuildException(…); } 클로저에서는 검사되는 예외 를 처리 하지 않아도 된다 . (Manifest. r)
  • 21. Lancet 을 앤트 프로젝트와 테스크에 적용 http://blog.naver.com/hsjhp?Redirect=Log&logNo=10007634263
  • 22. 자바와 같이 일하기 정리 클로저는 자바를 직접 호출 할 수 있다 . 자바 클래스를 만들거나 인터페이스 구현 가능 클로저는 실용성 을 기초로 한다 자바 코드를 잘 쓰자 하지만 자바 컬렉션 API 는 상대적으로 쓰지말자 . 시퀀스 라이브러리 가 더 강력하고 스레드 세이프 하다