가 사용하는 사람에 밀라노에서 분노가(그리고 무엇을위한 조언 Java 프로그래머)?[마감]

StackOverflow https://stackoverflow.com/questions/554913

  •  23-08-2019
  •  | 
  •  

문제

나는 Java 프로그래머를 위해 10 년을 시작으로 Smalltalk.그것은 내 생각에는 다음 큰 언어 될 가능성이 높은 것에 대해 실행되는 유비쿼터스 Java Virtual Machine.나는 장점을 가지고 몇 가지 기능의 스칼라(다른 언어)에는- case 문 클래스 계층 구조,마감,형식으로 유추이 더 작성하는 간결하고 명확한(I 희망한다)코드입니다.조금 더 가까이 Smalltalk!

는 모든 것들은 두 번째 자연에서 Java:

  • 건축과 ant
  • 배포하는 애플리케이션/라이브러리를 논리적으로 jars
  • 대 IDE 지원 도구
  • 쓰 Gui(또는 스윙 GUI 이야기를 통해 그것을 일종의 원격?)
  • 제 3 자 라이브러리/프레임워크
  • 구성(properties, XML, Spring 등등)
  • DB 등 드라이버

나는 염려하는 재생의 차이점으로 애완 동물 프로젝트 및 실제로 도약하에서 사용하는 분노에서 작업환경이 너무 조금이다.

  1. 는 사람들이 윤?
  2. 그만한 가치가 있었습니까?
  3. 어떤 교훈을 배웠는가?

(물론 사람들 밀라노-그러나 누구나 실제 건물,원하는 더 나은 단어, Enterprise 응용 프로그램은 무엇입니까?)

도움이 되었습니까?

해결책

기존 Java 인프라에서 Scala를 사용하여 큰 XML 문서를 쿼리하고 조작했습니다. 표준 Java XML 라이브러리를 사용하는 것은 불가능했거나 쉽지 않았습니다.

포트폴리오 성능 계산에 사용하려는 유혹을 받았지만 이미 Java 버전을 완료했습니다. 스칼라 버전은 공식을 코드로 직접 변환하기가 더 쉽기 때문에 유지하기가 더 쉬웠을 것입니다.

스칼라로 몰래 들어갈 수있는 또 다른 영역은 멀티 스레딩과 함께 있습니다. 이것에 대한 실제 경험은 없지만 스칼라에서는 더 쉬운 것 같습니다.

포인트는, 지금은 그것을 Java 교체품으로 보려고하지 말고 기존 Java 코드 옆에 스트렌지트를 활용할 수있는 곳에 사용하십시오.

나는 Scala 플러그인과 함께 Intellij를 IDE로 사용했지만 아직 존재하지 않습니다. Maven 플러그인 및 콘솔과 함께 사용할 수 있습니다.

나는 또한 SmallTalk 프로그래머이며 Scala에서 코드 블록을 사용할 수있는 것을 좋아합니다. Java에 비해 코드는 적지 만 SmallTalk 코드만큼 읽을 수는 없습니다.

BTW, SmallTalk 커뮤니티가 Seaside Framework 덕분에 다시 성장하고 있으므로 돌아오고 싶을 수도 있습니다.

내가 배운 것 또는 더 나은 이해를 얻은 것 :

  • 생성자의 사용
  • 불변의 개념
  • 목록 및 재귀 작업
  • 일반적으로 기능 프로그래밍

그렇습니다. 그만한 가치가 있다고 생각합니다.

다른 팁

저는 기본적으로 모든 사람에 머리와 스칼라에서 코드의 마지막 프로젝트는 내가 아픈 디버깅 같은 문제의 부족으로 인한 이해의 최대 절전 모드+JBoss.(이것은 놀라운 정말입니다.개발자 원래 시스템은 여전히 존재하고 여전히 잃었을 최대 절전 모드 상세정보.)

우리가 무엇을 했->엉뚱한 시스템 구축 대부분의 무리와 함께 무 EJB 콩 유선와 함께 일부는 최대 절전 모드 코드를 던져와 함께 몇 가지 SQL.(우리는 ASP,기본적으로합니다.생산 클러스터는 매우 작->만 주위에 100 기계입니다.)

무엇을 했->함께 넣어 다양한 나머지 기반의 서비스는 재정의 RPC 사이의 어떤 서버에 있습니다.이것은 모든 것이 매우 쉽게 코드,플러스 구현을 공개 API 으로 무엇이었는지는 관심이 없었다 지불하는 종속성입니다.

지금까지,우리가 시작 배포하는 코드에서 JBoss 인스턴스를 가진 진짜 문제입니다.첫 번째 시간에 당신을 사용하려고 Scala object 자바에서,당신은 아마 주름의 코입니다.하지만 그렇지 않으면 아무도 정말 나타났습니다.

지금까지,그것은 약 5 개월 때문에 우리가 정말 시작했다.우리는 몇 가지를 수행의 중요한 수정하고,이후에 뒤에있는,그러나 이 시스템은 훨씬,훨씬 더 나은 테스트보다는 과거에.는 동안 그래서,우리는 나쁜 아이디어에 숨어있는 동안 우리는 정말 배우는 시스템,우리는 이를 제거할 수 있 그들 모두,그리고,얻을까하는 생산 배포합니다.모두 모두,내가 말하는 일반적인 친구는 필요로 2~3 개월을 중지 코딩은 다음과 같이 Java 프로그래머,고"친숙하"대부분의 표준 라이브러리입니다.

쓰 JDBC 코드 대신 ORM 시스템이 기본적으로 던졌다 거의 모든 우리의 성능 문제입니다.속도는 실제로 훨씬 더 나은,그러나이었다로 내가 할 수 있었기 때문에 모든 것을 내가 원하는 미만 실제 응용 프로그램 코드입니다.

도구를 사용:

  1. Restlet :매우 행복으로 이 framework.우리의 restlet 층 않을까 사소한 코드입니다.
  2. JDBC ->참고:우리는 쥐게 무엇이었을 기본적으로 거기에서 위키
  3. XML(곧,JSON)
  4. buildr,maven 에 몇 프로젝트하고 싶지 않았 변환(plus Nexus 및 허드슨).나는 실험 sbt,이미 에 대한 좋은 스칼라 프로젝트입니다.

우리가 절대적으로 문제 없이 가진 재사용의 오래된 자바 라이브러리는,그러나 우리는 경향이 감싸는 스칼라에서-부분은 쓸 필요가 없다.대부분 그냥 덜 쓰 코드입니다.

포주 내 라이브러리 패턴는 훨씬 가장 중요한 것을 잘 알고 있다."케이크 패턴을"좋은,하지만 당신을 제어하는 인스턴스화하는,때로는 되지 않은 매우 유용합니다.또한 사용 쥬스와 혼합 환경에서,정말 어렵습니다.하지만 내가 찾는 섞는 코드는 방법은 내가 원래 생각했지만,그것은 아마 때문에 나는 많이 대체로 정말,정말 나쁜 자바 코드입니다.

내 편집 환경은 주로 파일을 미리 볼 OS X,그러나 우리는 배포에서 리눅스 서버입니다.

P.S.그렇다,나는 이것을 알고 있는 약 4 개월하지만,어떤 것이다.그것은 관련성,특히 지금은 우리가 경험이 있습니다.

나는 케플러 미션의 과학 작전 센터. 지금은 대화식 디버깅을 수행하기위한 것이 있습니다. 대체를 실행하고 일부 클래스를로드하고 메소드를 임시 방식으로 실행하십시오.

편집 : 알겠습니다. "일부 클래스를로드하고 메소드를 실행하십시오"는 모호합니다. 예를 들어, CRUD 클래스를로드 한 다음 메소드를 실행하여 한 종류의 우주선 시간을 다른 종류로 변환 할 수 있습니다.

user=> (import '(gov.nasa.kepler.hibernate.dr LogCrud))
user=> (def crud (new LogCrud))
#'user/crud
user=> (def shortCadences (.longCadenceToShortCadence crud 0 2500))
user=> (prn shortCadences)
#>

이 시간을 다른 종류의 시간 형식으로 변환하기 위해 호출 할 수있는 다른 방법이 있습니다. 우리는이 모든 기능을 캡슐화하기 위해 명령 줄 도구를 만들 수 있지만 Clojure에서 모든 것이 사용할 수 있기 때문에 필요는 없습니다.

이에 관련 링크,고 생각했던 차에,이제 우리는 몇 년니다.

IDE 지원을 향상 좋은 거래를 IntelliJ11 가 꽤 좋은 스칼라 지원합니다.구문 강조 표시 작품이 훌륭한지만,디버깅할 수 있는트너입니다.

SBT 처럼 보이는 그것을 신속하게 교체 maven 또는 개미/아이비,하나님 감사합니다,SBT 는 작업이 훨씬 쉬워보다 Maven,와 맞는 스칼라에 훨씬 좋습니다.IntelliJ 에 대한 한도가 있 SBT 콘솔,과 함께 대화형 디버깅할 수 있게 디버깅 스칼라에서 가 참으로 매우 신속하게,하지만 솔직히 말해서,구문 강조하는 이제 정말 좋은 양의 디버깅을 찾을 필요가 크게 줄어듭니다.밀라노는 단순히 흐름보다 훨씬 더 자바고로 이어질 것은 훨씬 오류 코드입니다.

데이터베이스 상호 작용한 것으로 보 조금에서 공기,하지만 몇 가지 프레임워크 밖에 없는 나쁜 얻을 수 있는 데이터베이스로 작업하는 방법은 하나 또는 다른니다.

타사 라이브러리와 프레임워크는 풍부 이 시점에서,그리고 물론을 계속 사용할 수 있습니다 일반전 Java 타사 라이브러리입니다.

이 시점에서,나에게 묻는 질문:왜 당신은 스칼라 사용하거나 다른 차세대 JVM 언어에 대한 프로젝트가 있습니까?고 있지만 간단한 대답은 많은 devs 지 않을 처리 할 준비가 스칼라에,오늘날 모든 정직,그들이 필요로하는 자의 머리는 그들의 집단적인 나귀와 게임에서 얻을,그리고 회사의 명령 사용법을 갈 것입니다 만들기 위해 먼 길을 일어나는(우리 모두 필요합 밀어 가끔 다시 얻을 수있는 게임에서).또한,당신은 모든 종류의"엔터프라이즈"또는 높은 볼륨을 개발,그리고 당신이 이해하지 못하는 기능 프로그램과 그것을 알아낼 수 없습니다,우리에게 모든 호의를 내려 놓고,IDE,또는 하나님이 금지하 vim,스틱을하는 스크립트나 찾아 새로운 경력 경로입니다.

많은 높은 프로필에는 회사를 활용하여 밀라노,오늘날 대부분의 공공의 아마 Twitter.그들은 또한 기여의 일부를 프레임워크는 오픈 소스로 세계 too.

그렇습니다. 사람들은 Scala (및 Clojure)를 사용하여 실제 "기업"응용 프로그램을 구축하고 있습니다. 그냥 해.

물론 사람들은 SmallTalk도 사용하고 있으므로 SmallTalk를 좋아한다면 왜 사용하지 않습니까?

나는 "Trial Anger"에서 한 번 사용하여 몇 기가 바이트의 데이터를로드하기 위해 사용했습니다 (우리가하는 일을위한 상당히 가벼운 작업량). 나는 그것이 Pypy보다 성능이 높고 메모리 오버 헤드가 적을 수 있기를 바랐다. 메모리 사용에 대해서도 실패했습니다. 너무 나쁘게 나는 겁에 질려서 그것을 말하기에 당황 스러웠으며, 다시는 보지 않았다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top