ภาษาที่ใช้งานได้ซึ่งรวบรวมเป็น Dalvik VM ของ Android หรือไม่ [ปิด]


16

ฉันมีปัญหาซอฟต์แวร์ที่เหมาะกับวิธีการทำงานของการเขียนโปรแกรม แต่ตลาดเป้าหมายจะอยู่ในระบบปฏิบัติการ Android ฉันถามเพราะมีภาษาที่ใช้งานได้ซึ่งคอมไพล์กับ VM ของ Java แต่ Dalvik bytecode! = Java bytecode

อีกทางหนึ่งคุณรู้หรือไม่ว่าdxยูทิลิตี้นี้สามารถแปลง.classไฟล์ที่สร้างจากภาษาที่ใช้งานได้เช่น Scala อย่างชาญฉลาดหรือไม่?

แก้ไข : เพื่อเพิ่มความเป็นประโยชน์ให้กับชุมชนอีกเล็กน้อยและเพื่อช่วยให้ฉันเลือกได้ดีขึ้นฉันจะแก้ไขคำถามได้หรือไม่

  • คุณเคยใช้ภาษาอื่นกับ Dalvik บ้างไหม? อันไหน?
  • "gotchas" (ปัญหา) ที่ฉันอาจพบมีอะไรบ้าง
  • ประสิทธิภาพเป็นที่ยอมรับหรือไม่? จากนั้นฉันหมายความว่าแอปพลิเคชันยังคงตอบสนองต่อผู้ใช้

ฉันไม่เคยพัฒนาโทรศัพท์มือถือมาก่อน แต่ฉันโตมากับอุปกรณ์ที่มีข้อ จำกัด และฉันก็ไม่คิดว่าจะมีค่าใช้จ่ายในการใช้ภาษาที่ไม่ได้มาตรฐานกับแพลตฟอร์ม ฉันแค่ต้องรู้ว่าค่าใช้จ่ายนั้นเป็นสิ่งที่ฉันควรจะลองใช้วิธีการของฉันเป็นภาษาเริ่มต้น (เช่นใช้หลักการทำงานในภาษา OOP)


ฉันได้อัปเดตคำถามแล้ว ขอบคุณ @geekosaur สำหรับคำตอบแรกของคุณ นั่นคือข้อมูลเริ่มต้นที่ฉันกำลังมองหา
Berin Loritsch

ฉันได้ยินเสียงกระซิบที่ Haskell cafe ของผู้คนที่ทำสิ่งนี้กับ FFI + Haskell + Courage ฉันเชื่อว่ามีห้องสมุดสำหรับ github / แฮ็คมัน
Daniel Gratzer

คำตอบ:


7

มีบล็อกโพสต์โดย Christian Neukirchen ชื่อการเขียนโปรแกรมสำหรับ Android กับ Scalaที่แสดงวิธีการสร้างโปรแกรม Scala สำหรับ Android ดูเหมือนว่าdexจะสามารถจัดการ Scala ได้ แต่คุณต้องใช้เครื่องมืออย่าง ProGuard เพื่อลดขนาดไลบรารีของ Scala ลงให้มีขนาดเพราะdexมิฉะนั้นจะนำเข้า Scala runtime ทั้งหมด

นอกจากนี้ยังมีบางส่วนทำงานอย่างต่อเนื่องในการเขียนโปรแกรมบน Android กับErjangและClojure


1
ดูเหมือนว่าตัวเลือกทั้งหมดที่คุณให้มีโทษประสิทธิภาพที่ร้ายแรง นั่นบอกฉันว่าตัวเลือกยังไม่โตพอสำหรับช่วงเวลาสำคัญเท่านั้น อาจจะในอีกปีหนึ่ง
Berin Loritsch

ตราบใดที่คุณไม่ได้ใช้ห้องสมุดชั้นเรียนขนาดใหญ่ของสกาล่าก็ไม่ควรมีบทลงโทษที่มีประสิทธิภาพมากนัก นอกจากนี้คุณสามารถทำให้กระบวนการทั้งหมดเป็นอัตโนมัติด้วย maven
Kim

@Berin: ฉันคิดว่าอนาคตไม่ได้ใช้ภาษากำหนดเป้าหมาย JVM - dexเป็นสิ่งที่ดีที่สุดที่จะจัดการกับไม่ใช่เพียงแค่ Java bytecode แต่ยังเป็นรูปแบบ bytecode ของ Java ด้วย(คุณจะเห็นการอภิปรายเรื่องนี้ในลิงก์ที่ฉันให้ไว้ก่อนหน้านี้) Dalvik VM โดยตรง น่าจะเป็นไปได้ที่เร็วกว่า Java- dexroute
geekosaur

1
และสำหรับผู้ที่สงสัยคือ bytecode Dalvik VM เป็นเอกสาร: opcodes , รูปแบบการเรียนการสอน ฉันเห็นความเป็นไปได้บางอย่างสำหรับการปรับแต่งช่องมองภาพเป็นไปไม่ได้โดยการกำหนดเป้าหมาย JVM ทันทีให้เพิ่มประสิทธิภาพอย่างชาญฉลาดยิ่งขึ้นโดยใช้สถาปัตยกรรม Dalvik โดยตรง
geekosaur

@ Kim บทความที่ฉันพบว่าปัญหาด้านประสิทธิภาพเป็นความแตกต่างระหว่างอัลกอริธึมการโหลดคลาสสำหรับ Java และ Dalvik หากฉันอยู่ห่างจากคุณสมบัติภาษาแบบไดนามิกของ Scala ฉันควรหลีกเลี่ยงปัญหาการโหลดในชั้นเรียน ปัญหาเดียวกันนั้นทำให้เกิดตัวเลือกอื่น ๆ ตอนนี้มันยังค่อนข้างใหม่อยู่ ฉันยังอาจท้ายลองใช้กับโครงการนี้ - มันเป็นข้อพิสูจน์ของแนวคิด แต่อย่างใด
Berin Loritsch

7

Kawaเป็นตัวแปรที่น่ารัก แต่ที่รู้จักกันเล็ก ๆ น้อย ๆ ของโครงการที่มีอยู่อย่างเงียบ ๆ มานานหลายปีและทำงานได้ทั้งบน JVM และ Dalvik, กำเนิด ดังนั้นคล้ายกับ Mirah เอาต์พุตจึงไม่มี VM พิเศษและรวมเฉพาะไลบรารีที่อิมพอร์ตอย่างชัดเจน Kawa มีมาโครมาตรฐานจำนวนมาก (รวมถึงบางตัวที่ใช้กับ Android APIs) ที่สร้างมาเพื่อไวยากรณ์ที่สะอาดดี (สมมติว่าไม่มีใครไม่ชอบวงเล็บ) และเพิ่มสารพัดอร่อย ๆ ไว้ด้านบนของโครงการเช่น "สัญญา" (ขี้เกียจ Eval และอนาคต ในหนึ่ง) ภาษาค่อนข้างแข็งแกร่งและมีเอกสารครบถ้วนและได้รับการบำรุงรักษาและพัฒนาอย่างต่อเนื่องนับตั้งแต่ยุคแรก ๆ ของ Java

ปฏิทินจุติของ Javaสรุปข้อดีของ Kawa ด้วยตัวอย่างและลิงค์ข้อมูล


ว้าวขอบคุณที่ชี้ให้ฉันไปหา Kawa! ฉันพยายามที่จะทำการพัฒนาที่ไม่ใช่ Java Android และมันดูมีแนวโน้มมาก
Evicatos

1

ข้างๆ scala ฉันอาจแนะนำให้คุณดู mirah บน android นี่คือรายละเอียดบางอย่าง: http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-development/

แล้วอะไรที่ทำให้วิธีนี้ดีกว่าภาษาอื่น? Mirah เป็นภาษาที่พิมพ์แบบคงที่มีความคล้ายคลึงกับทับทิม ซึ่งทำให้สไตล์การใช้งานบางอย่างดีกว่า java.Usually 'การย้าย' ภาษาสำหรับ Android นั้นเป็นปัญหาเพราะคุณต้องพอร์ตไลบรารีมาตรฐานด้วยเช่นกัน Mirah หลีกเลี่ยงสิ่งนี้โดยหลีกเลี่ยงการใช้ lib มาตรฐาน ในเนื้อหาที่อ้างอิงมีภาพรวมที่ดีจากประสบการณ์โลกแห่งความจริงที่ใช้ Mirah บน Android และวิธีการที่จะเปิดออก (ลอง 2)


1
โปรดอย่าโพสต์คำตอบเดิมใหม่ทั้งหมดที่คุณต้องทำเพื่อขอให้คำตอบของคุณถูกยกเลิกการลบหลังจากที่คุณแก้ไขมันก็คือการติดธงทำเครื่องหมายเพื่อให้ความสนใจในการกลั่นกรอง
yannis

0

มีการจำนวนมากของการเคลื่อนไหวบน Clojure บน Android ( https://github.com/clojure-android/neko ) Neko
มีปัญหาด้านประสิทธิภาพที่เกี่ยวข้องกับ Dalvik VM และ Clojure Compiler ปัญหาเหล่านี้กำลังได้รับการแก้ไขอย่างช้าๆ

งานนำเสนอเกี่ยวกับสถานะปัจจุบัน (กรกฎาคม 2015): https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ


-1

มันยังไม่ค่อยมี แต่ Miguel de Icaza คนที่รู้เรื่องหนึ่งหรือสองอย่างเกี่ยวกับ Davlik VM กล่าวว่า " F # สำหรับ droid อยู่ในรายการสิ่งที่ต้องทำ " ดังนั้นฉันจะบอกว่าแพคเกจอย่างเป็นทางการกำลังจะมา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.