안드로이드의 Dalvik VM으로 컴파일되는 기능적 언어? [닫은]


16

프로그래밍에 대한 기능적 접근 방식에 맞는 소프트웨어 문제가 있지만 대상 시장은 Android OS에 있습니다. Java의 VM으로 컴파일되는 기능적 언어가 있기 때문에 묻지 만 Dalvik 바이트 코드! = Java 바이트 코드입니다.

또는 dx유틸리티가 .classScala와 같은 기능적 언어에서 생성 된 파일을 지능적으로 변환 할 수 있는지 알고 있습니까?

편집 : 커뮤니티에 좀 더 도움을주고 더 나은 선택을하기 위해 질문을 조금 더 세분화 할 수 있습니까?

  • Dalvik과 함께 대체 언어를 사용해 보셨습니까? 어느 것?
  • 내가 겪을 수있는 몇 가지 "문제"(문제)는 무엇입니까?
  • 성능이 허용됩니까? 즉, 응용 프로그램이 여전히 사용자에게 반응한다고 느낍니다.

나는 휴대 전화 개발을 한 적이 없지만 제한된 장치에서 자랐으며 플랫폼과 함께 비표준 언어를 사용하는 데 비용이 든다는 환상은 없습니다. 비용이 기본 언어로 접근해야하는지 (예 : OOP 언어의 기능적 원칙 적용) 비용이 필요한지 알아야합니다.


질문을 업데이트했습니다. 첫 답변에 @geekosaur에게 감사합니다. 그것은 내가 찾고 있던 정보를 시작하는 것이 었습니다.
Berin Loritsch

FFI + Haskell + Courage로 이것을하는 사람들의 Haskell 카페에서 속삭임을 들었습니다. 나는 그것을 위해 github / hackage에 라이브러리가 있다고 믿는다
Daniel Gratzer

답변:


7

Christian Neukirchen의 블로그 게시물 에는 Android 용 Scala 프로그램을 작성하는 방법을 보여주는 Scala사용한 Programming for Android 라는 블로그 게시물이 있습니다 . dex스칼라를 처리 할 수있는 것처럼 보이지만 스칼라 클래스 라이브러리를 크기에 맞게 축소 dex하려면 전체 스칼라 런타임을 가져 오기 때문에 ProGuard와 같은 도구를 사용해야 합니다.

ErjangClojure를 사용한 Android 프로그래밍에 대한 진행중인 작업도 있습니다 .


1
귀하가 제공 한 거의 모든 옵션에 심각한 성능 불이익이있는 것으로 보입니다. 그것은 옵션이 아직 충분한 시간 동안 아직 성숙하지 않다는 것을 말해줍니다. 아마 다른 해에?
Berin Loritsch

스칼라 클래스 라이브러리의 많은 부분을 사용하지 않는 한 성능에 큰 영향을 미치지 않아야합니다. 또한 maven으로 전체 프로세스를 자동화 할 수 있습니다.
Kim

@Berin : 미래는 JVM 타겟팅 언어를 사용하지 않는다고 생각합니다. dex결국 Java 바이트 코드뿐만 아니라 Java의 바이트 코드 규칙 을 처리하도록 최적화되었습니다 (앞에서 제공 한 링크에서 이에 대한 설명을 볼 수 있습니다). Dalvik VM 직접. 아마도 Java- dex라우트 보다 더 빠를 수도 있습니다.
geekosaur

1
궁금한 점이 있으시면 Dalvik VM 바이트 코드가 문서화되어 있습니다 ( opcodes , 명령 형식) . Dalvik 아키텍처를 직접 사용하는 똑똑한 최적화는 물론 JVM을 즉시 대상으로 지정하면 구멍 최적화가 불가능할 가능성이 있습니다.
geekosaur

@Kim, 내가 찾은 기사는 성능 문제가 Java와 Dalvik의 클래스 로딩 알고리즘의 차이점에 있다고 말했다. Scala의 동적 언어 기능에서 벗어나면 클래스 로딩 문제를 피할 수 있어야합니다. 같은 문제가 다른 옵션을 괴롭 혔습니다. 지금도 여전히 새로운 것입니다. 나는 여전히이 프로젝트에서 시도해 볼 수 있습니다. 어쨌든 개념 증명입니다.
Berin Loritsch

7

Kawa 는 수년 동안 조용히 존재 해 왔으며 JVM과 Dalvik에서 기본적으로 실행되는 사랑 스럽지만 거의 알려지지 않은 Scheme 변형입니다 . 따라서 Mirah와 마찬가지로 출력에는 추가 VM이없고 명시 적으로 가져온 라이브러리 만 포함됩니다. Kawa에는 멋진 구문을 만들 수있는 많은 표준 매크로 (Android API에 대한 일부 포함)가 있으며 "약속"(게으른 평가 및 미래)과 같은 체계 위에 맛있는 것들을 추가합니다. 하나의). 이 언어는 매우 강력하고 잘 문서화되어 있으며 Java 초기부터 활발하게 유지되고 발전해 왔습니다.

Java Advent Calendar 는 Kawa의 장점을 유익한 예와 링크로 요약합니다.


와, 나를 가리켜 줘서 고마워! Java 이외의 안드로이드 개발을하고 싶었고 이것이 유망한 것으로 보입니다.
Evicatos 2016 년

1

스칼라 옆에 내가 안드로이드에 미라의 모습을 가지고 당신을 제안 할 수 있습니다, 여기에 몇 가지 세부 사항은 다음과 같습니다 http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-development/

그렇다면이 방법이 다른 언어보다 '더 나은'이유는 무엇입니까? Mirah는 루비와 유사한 정적 유형 언어입니다. 어떤 기능적 스타일이 java보다 논란의 여지없이 좋을 수 있습니다. 일반적으로 언어를 안드로이드로 '포팅'하는 것은 표준 라이브러리를 포팅해야하기 때문에 문제가됩니다. Mirah는 표준 lib를 사용하지 않으므로이를 방지합니다. 참조 자료에는 안드로이드에서 mirah를 실행하는 REAL WORLD 경험과 그것이 어떻게 밝혀 졌는지에 대한 멋진 개요가 있습니다. (시도 2)


1
제발 하지 않는 당신이 중재 관심 플래그를이었다 편집 한 후 같은 대답을 재 게시, 당신은 당신의 대답을 요청해야 할 일을했을 모두 삭제 취소합니다.
yannis


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.