2013-08-09 1 views
0

나는 Clojure에 일반 http/ftp 파일 다운로더를 작성하려고한다. 나는 약간의 연구를했고 자바의 API 인 BufferedReader BufferedInputStream 등을 사용하거나 Clojure.java.io의 API 라이저, 리더, 입력 스트림, 출력 스트림을 사용할 수 있다는 것을 발견했다. 다운로더를 작성하려면 Clojure.java.io 또는 Java의 io api?

  1. 내가 사용하고 자바의 API에 비해보다 쉽게 ​​읽을 수 Clojure에서의 API를 찾았지만, 방법에 대해 등 성능, 속도, 측면에서, 자바의 API는 더 나은 선택이 될 것입니다?

  2. 대신 다른 중 하나를 선택하는 다른 이유가 있나요?

    JVM을 플랫폼 언어로
  3. 는 Clojure의 성능의 측면에서, 파일 다운로드 프로젝트를위한 좋은 선택이다? 연구를하고있는 동안, 나는 또한

+1

언급 한 모든 기능은 표준 자바 프리미티브를 둘러싼 매우 간단한 래퍼이기 때문에 Clojure IO API와 같은 것은 없다. 'Clojure API'는 IO를 수행하는 동안 관용구 코드를 작성할 수있는 편의를 제공합니다. 파일 다운로더를 작성하고 이것이 Java 플랫폼의 첫 번째 프로젝트가 아닌 경우 netty 또는 async-http-client와 같은 특수 라이브러리를 프로젝트에 사용하는 것이 좋습니다. 이 라이브러리는 보통 Clojure에서도 편리한 래퍼를 가지고있다. –

+0

@VladimirMatveev 잘 알려 줘서 고마워 .-D 내 첫 번째 큰 프로젝트 야.내가 전에 한 일은 모든 대학 프로젝트 였고, 심지어 네티와 같은 도서관을 알지도 못했습니다. 이제이 두 라이브러리를 살펴 보겠습니다 .-D –

답변

1

Clojure의 API를해야 느낌 .. 일부 게시물 JVM 플랫폼에서 속도 & 메모리 성능에 대한 토론, 나는 내 언어 선택은 내 프로젝트에 좋은 경기 있는지 알고 싶어 지금 생각 읽기 Clojure 숙어를 염두에두고 만들어 졌기 때문에 더 자연 스럽다. 물론 Java API를 사용할 수는 있지만 많은 Java interop 함수 호출을 기대할 수 있습니다.
물론 그 중 어떤 것도 잘못이 아니지만 유창한 Clojure API는 아닙니다. 나는 성능 저하가 표시되지

는, JVM은 자바, 스칼라, Clojure의 또는 JRuby를인지, 당신이 사용하는 어떤 상관없이 부팅 속도가 느리다. Clojure는 실제로 연기자입니다. 그런데 Clojure에서 프로젝트를 바이트 코드 형식으로 컴파일 할 수 있다는 것을 알고 계십니까?

는 Clojure의 파일 다운 프로젝트를위한 좋은 선택인가?
나는 확실히 말할 것입니다!
한 가지 주요 이점은 Clojure가 동시성을 처리하는 방법입니다. 생각해 보면 프로젝트가 많은 스레딩, 잠금 및 동기화를 수행합니다 (많은 파일을 동시에 다운로드 할 수있는 다운로더를 구축하고 있습니까?).
Clojure에서는 에이전트 (프로젝트에 매우 편리함), 참조 및 원자와 같은 상위 추상화를 사용합니다.

난 당신이 JVM 성능 및 메모리 관리에 대해 읽어 자원에 대한 확실하지 않다. JVM은 정교한 소프트웨어입니다. JVM은 메모리 관리를위한 많은 전략을 제공합니다. 일부는 데스크톱 응용 프로그램에 적합하고 다른 응용 프로그램은 서버에 적합합니다. 응용 프로그램/시스템 요구 사항에 따라 적합한 전략을 선택할 수 있습니다. 그런데

, 스윙 사용하여 응용 프로그램을 구축 할 계획입니까? 그렇다면 Clojure와 함께 가기로 결정한 후 Seesaw을보십시오.

시소는 Clojure에서 사용자 인터페이스를 구성하기위한 라이브러리/DSL입니다. 그것은 스윙을 기반으로 만들어 지지만, 그걸 붙들지 마십시오.

+0

고마워요! :-D 지금까지 REPl을 사용하여 기본 기능에 대해서만 연구했기 때문에 아직 UI를 다루지 않았습니다. 방금 시소를 확인했는데 꽤 좋아 보인다. 나는 Clojure에 충실하고 계속 개발할 것입니다. –

관련 문제