Codename One คือสภาพแวดล้อมแบบข้ามแพลตฟอร์มบนมือถือสำหรับนักพัฒนา Java และ Kotlin สามารถคอมไพล์ Java bytecode ไปเป็นไฟล์ปฏิบัติการระบบปฏิบัติการดั้งเดิม (iOS, Android, UWP ฯลฯ) เป็นแพลตฟอร์มมือถือที่สมบูรณ์แบบซึ่งมีเครื่องเสมือน เครื่องจำลอง เครื่องมือออกแบบ (ธีมภาพ/ตัวสร้าง/css) การผสานรวม IDE พอร์ตไปยังระบบปฏิบัติการหลายระบบ และอื่นๆ อีกมากมาย โดยให้การเข้าถึงโค้ดเนทิฟ OS พื้นฐานได้อย่างเต็มที่ (เช่น Objective-C, C#, Dalvik/ART) ผ่านทางนามธรรมแบบพกพาซึ่งช่วยให้สามารถนำโค้ดกลับมาใช้ใหม่ได้ 100%
ต่างจากอีมูเลเตอร์ที่คุณเห็นใน Android เป็นต้น Codename One ใช้ตัวจำลอง ซึ่งหมายความว่ามันเริ่มทำงานอย่างรวดเร็วแม้ในขณะที่ทำการดีบั๊ก คุณสามารถเพลิดเพลินกับฟีเจอร์ IDE เช่น การรีโหลดโค้ดแบบสดเพื่อแก้ไขโค้ดในรันไทม์ ฯลฯ
นี่หมายถึงวงจรการดีบักที่เร็วขึ้นและกระบวนการพัฒนาที่เร็วขึ้น!
เลือกจาก "สกิน" ของอุปกรณ์ที่มีให้เลือกมากมายเพื่อดูว่าแอปของคุณจะมีลักษณะอย่างไรบนอุปกรณ์เฉพาะ สกินคำนึงถึงปัจจัยต่างๆ เช่น ความละเอียดและความหนาแน่นของอุปกรณ์ เพื่อมอบการนำเสนอแอปของคุณที่สมบูรณ์แบบทุกพิกเซล ดังที่จะปรากฏบนอุปกรณ์จริง การสลับระหว่างสกินของอุปกรณ์ทำได้แทบจะทันที
คุณสามารถแก้ไขและสนับสนุนสกินในโครงการโอเพ่นซอร์สของตนเองได้ที่นี่
โต้ตอบกับ API ของแอปพลิเคชันของคุณขณะรันไทม์โดยใช้ Groovy Console แบบโต้ตอบ ตรวจสอบสถานะแอปพลิเคชันหรือการทดสอบด้วยการเปลี่ยนแปลงทั้งหมดในขณะที่แอปกำลังทำงาน
ซึ่งช่วยให้คุณตรวจสอบปัญหาและทดลองได้โดยไม่ต้องเสียค่าใช้จ่ายแม้แต่น้อยในการคอมไพล์ใหม่
โปรแกรมจำลองช่วยให้คุณใช้ประโยชน์จากคุณสมบัติ "โหลดคลาสที่เปลี่ยนแปลงใหม่" ใน IntelliJ (ชื่อ "ใช้การเปลี่ยนแปลงรหัส" ใน NetBeans) เพื่อให้การเปลี่ยนแปลงที่คุณทำในซอร์สโค้ด Java ของคุณจะถูกนำไปใช้กับแอปที่ทำงานอยู่แล้วในโปรแกรมจำลองทันที
โปรดทราบว่าสิ่งนี้มักจะเหนือกว่าคอนโซลแบบโต้ตอบ แต่มีข้อจำกัด เช่น ความสามารถในการเพิ่มวิธีการ/เปลี่ยนแปลงโครงสร้างของโค้ด ข้อจำกัดเหล่านี้ใช้ไม่ได้กับคอนโซลแบบโต้ตอบ!
เมื่อคุณทำการเปลี่ยนแปลงสไตล์ชีต CSS ของแอป การเปลี่ยนแปลงจะมีผลทันทีในตัวจำลอง ซึ่งรวมถึงการเปลี่ยนธีม รูปภาพ แบบอักษร ฯลฯ การเปลี่ยนแปลงทั้งหมดจะรีเฟรชทันทีเมื่อบันทึก ไม่จำเป็นต้องโหลด/รีเฟรชหรืออะไรทำนองนั้น!
ทำให้กระบวนการจัดรูปแบบแอปพลิเคชันเป็นเรื่องง่ายและรวดเร็วอย่างน่าทึ่ง
ใช้ตัวตรวจสอบส่วนประกอบที่มีประสิทธิภาพเพื่อเรียกดูลำดับชั้นส่วนประกอบ UI ในแอปของคุณ เครื่องมือนี้ทำให้ง่ายต่อการค้นหาว่าช่องว่างภายในพิเศษนั้นมาจากไหน หรือเหตุใดบางสิ่งบางอย่างจึงไม่อยู่ในแนวที่คุณต้องการ คุณยังสามารถเปลี่ยน UIID (ตัวเลือก) ของส่วนประกอบในรันไทม์เพื่อดูว่ามันส่งผลต่อ UI อย่างไร และดูว่าส่วนประกอบใดในลำดับชั้นที่แมปกับองค์ประกอบในแผนผังส่วนประกอบ (เทียบเท่า DOM)
ดูการเชื่อมต่อเครือข่ายทั้งหมดที่แอปของคุณทำโดยใช้ Network Monitor เครื่องมืออันมีค่านี้มีประโยชน์เมื่อคุณพยายามค้นหาสาเหตุที่คำขอ HTTP ไม่ทำงานสำหรับคุณ ตรวจสอบส่วนหัวและเนื้อหาของทั้งคำขอและการตอบกลับ คุณยังสามารถควบคุมเครือข่ายเพื่อจำลองการเชื่อมต่อเครือข่ายที่ช้าได้อีกด้วย
ใช้เครื่องมือ Test Recorder เพื่อบันทึกการทดสอบหน่วยสำหรับแอปของคุณ เมื่อคุณเริ่มการบันทึก ระบบจะบันทึกการโต้ตอบของคุณไว้ในการทดสอบหน่วยที่สามารถเล่นได้ในภายหลังเพื่อตรวจสอบว่าพฤติกรรมนั้นยังคงถูกต้อง
จากนั้น คุณสามารถเชื่อมต่อการทดสอบที่บันทึกไว้กับกระบวนการ CI ของคุณ รวมถึงการทดสอบอุปกรณ์แบบอัตโนมัติ
Codename One เป็นโครงการโอเพ่นซอร์สที่สมบูรณ์ซึ่งมีรากฐานมาจาก Sun Microsystems (2006) ซึ่งหนึ่งในองค์ประกอบพื้นฐานหลักได้รับการพัฒนาและโอเพ่นซอร์ส คุณสามารถเรียนรู้เกี่ยวกับประวัติของมันและวิธีการทำงานได้ในวิดีโอนี้
แอป Codename One ทำงานเหมือนกับแอปเนทีฟ เนื่องจากเป็นแอปเนทีฟจริง
พวกมันถูกคอมไพล์แบบคงที่เป็นไบนารีดั้งเดิมโดยใช้เครื่องมือสร้างอย่างเป็นทางการของแพลตฟอร์มเป้าหมาย
บนแพลตฟอร์มที่ไม่รองรับ Java แบบเนทีฟ เช่น iOS รหัสไบต์ JVM ของแอปจะถูกแปลงเป็นรูปแบบที่เครื่องมือสร้างแบบเนทีฟจะยอมรับในขั้นแรก บน iOS รหัสไบต์ JVM ของแอปจะถูกแปลงเป็นซอร์สโค้ด C ในโปรเจ็กต์ xcode จริง บน Android เนื่องจาก Java ได้รับการสนับสนุนโดยกำเนิด จึงไม่จำเป็นต้องมีการแปลงดังกล่าว App Jar รวมเข้ากับโปรเจ็กต์ Android Studio Gradle โดยตรง ซึ่งสามารถสร้างได้โดยตรงโดยใช้เครื่องมือสร้าง Android SDK
คุณสามารถคลิกที่ภาพเพื่อขยายหรือดูเวอร์ชัน PDF ได้ที่นี่
เคล็ดลับ: ขณะนี้เรากำลังเปลี่ยนไปใช้ Maven และได้สร้างวิธีการใหม่ที่ง่ายกว่าในการสร้างโครงการ ลองดู https://start.codenameone.com เพื่อเริ่มต้นทันที
มีอะไรให้รู้มากมายเกี่ยวกับ Codename One วิดีโอความยาว 3 นาทีนี้ให้มุมมองระดับสูงที่กระชับมาก โปรดสังเกตว่ามีวิดีโอที่คล้ายกันสำหรับ Eclipse, IntelliJ/IDEA และ Netbeans ที่นี่:
Codename One สามารถขยายได้อย่างง่ายดายโดยใช้ไลบรารีของบุคคลที่สามที่สามารถรวมโค้ดระบบปฏิบัติการดั้งเดิมได้ มีรายการไลบรารีเหล่านี้ (cn1libs) มากมายที่นี่ รายการไลบรารีจะถูกสร้างขึ้นโดยอัตโนมัติตามโปรเจ็กต์ GitHub นี้
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Codename One และความสามารถของ Codename One ได้ที่เว็บไซต์หลัก และคุณสามารถดูรายการเอกสารและบทช่วยสอนที่ครอบคลุมได้ที่นี่
คุณสามารถเริ่มต้นด้วยไบนารีและมุมมองแบบเบิร์ดอายได้ในส่วนดาวน์โหลด ลิงค์สำคัญเพิ่มเติมคือ:
หมายเหตุ: เรากำลังอยู่ระหว่างการย้ายจาก Ant ไปยัง Maven ซึ่งจะทำให้กระบวนการสร้างจากแหล่งที่มาง่ายขึ้น ดู Ant Quick Start สำหรับคำแนะนำในการสร้าง Ant รุ่นเก่า
การตั้งค่าจะกล่าวถึงในเชิงลึกในบทความและวิดีโอนี้
สำคัญ: Building Codename One ต้องใช้ JDK 8 ในปัจจุบัน คุณไม่สามารถใช้ JDK 11 ได้ เนื่องจากบางโมดูลย่อยต้องใช้ -source 1.5
และ -target 1.5
เพื่อรักษาความเข้ากันได้แบบย้อนหลังกับส่วนของ toolchain
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
สิ่งนี้จะสร้างและติดตั้ง Codename One ในพื้นที่เก็บข้อมูล Maven ในเครื่องของคุณ กระบวนการนี้อาจใช้เวลาสักครู่เนื่องจากจะดาวน์โหลดการอ้างอิงที่มีขนาด ~ 1GB โดยอัตโนมัติ
หากต้องการสร้างโปรเจ็กต์ต้นแบบจากแหล่งที่มา คุณควรตรวจสอบพื้นที่เก็บข้อมูล cn1-maven-archetypes และสร้างด้วย:
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
เมื่อติดตั้ง Codename One ในพื้นที่เก็บข้อมูล Maven ในเครื่องของคุณแล้ว คุณสามารถใช้เวอร์ชันนั้นในโปรเจ็กต์แทนเวอร์ชันรีลีสได้ สามารถสร้างโครงการทดสอบใหม่ได้อย่างรวดเร็วด้วย Codename One Initializr
หลังจากดาวน์โหลดและแตกโปรเจ็กต์แล้ว ให้เปิดไฟล์ pom.xml และค้นหาคุณสมบัติ <cn1.version>
และ <cn1.plugin.version>
จากนั้นเปลี่ยนสิ่งเหล่านี้ให้ชี้ไปที่เวอร์ชันที่ติดตั้งลงในที่เก็บ maven ในเครื่อง ของคุณโดย mvn install
เวอร์ชันที่สร้างขึ้นในเครื่องโดยปกติจะเป็นเวอร์ชัน SNAPSHOT (เช่น 7.0.21-SNAPSHOT)
การรับและสร้างแหล่งที่มา
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
รันการทดสอบหน่วย
$ ant test-javase
กำลังรันตัวอย่าง
ไดเร็กทอรี Samples มีชุดแอปพลิเคชันตัวอย่างที่เพิ่มขึ้นเรื่อยๆ ตัวอย่างเหล่านี้ไม่ได้มีไว้สำหรับการสาธิต แต่เป็นตัวอย่างวิธีใช้ API
คุณสามารถเปิดแอปตัววิ่งตัวอย่างได้จากบรรทัดคำสั่งโดยใช้:
$ ant samples
iOS VM ของ Codename One ค่อนข้างมีเอกลักษณ์และเป็นโอเพ่นซอร์สเช่นกัน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในโฟลเดอร์เฉพาะในพื้นที่เก็บข้อมูลนี้
ParparVM เป็น VM อนุรักษ์นิยมที่แปล Java bytecode เป็นโค้ด C จึงให้ประสิทธิภาพและการเข้าถึงแบบเนทีฟในขณะที่ยังคงให้ความปลอดภัย วิธีการนี้เป็นแนวทางเฉพาะสำหรับ Codename One และจำเป็นสำหรับความเข้ากันได้ในอนาคต!
Apple มีแนวโน้มที่จะเปลี่ยนแปลงสิ่งต่างๆ อย่างกะทันหัน เช่น การรองรับ 64 บิต บิตโค้ด เป็นต้น เนื่องจาก ParparVM สร้างโปรเจ็กต์ Xcode มาตรฐาน จึงไม่จำเป็นต้องมีการเปลี่ยนแปลงโค้ดสำหรับการเปลี่ยนแปลงเปลือกโลกเหล่านี้ เหมือนกับว่าคุณเขียนโค้ดโปรเจ็กต์ด้วยตัวเอง!
คุณยังสามารถเปิดโปรเจ็กต์ผลลัพธ์ใน xcode และดีบักหรือทำโปรไฟล์บนอุปกรณ์ iOS ได้โดยตรง ข้อมูลนี้ให้ข้อมูลที่เป็นประโยชน์มากมาย เช่น callstacks ที่อ่านได้ และการติดตามประสิทธิภาพที่มีคุณค่า/ดำเนินการได้...
คอมไพเลอร์แบบเดิมไม่มีประสิทธิภาพในกรณีเหล่านี้
Codename One รักษาทางแยกของ iKVM ซึ่งเป็น JVM สำหรับ CLR พอร์ตที่ได้รับการปรับเปลี่ยนนี้ช่วยให้เราสามารถเรียกใช้การใช้งาน Universal Windows Platform ของ Codename One บนอุปกรณ์ Windows 10 ได้
เราให้การสนับสนุนที่ StackOverflow เมื่อคุณแท็กโดยใช้ชื่อรหัส คุณสามารถถามอะไรก็ได้ที่นั่น และเราพยายามที่จะตอบสนองได้ดี ลิงก์ StackOverflow ยังทำหน้าที่เป็นคำถามที่พบบ่อยที่ขับเคลื่อนโดยชุมชนที่ยอดเยี่ยม เนื่องจากเชื่อมโยงคำถามของผู้ใช้กับคำตอบอย่างแท้จริง
Codename One มีกลุ่มสนทนาที่คุณสามารถโพสต์คำถามได้ อย่างไรก็ตาม เนื่องจากธรรมชาติของกลุ่มนั้น เราจึงพยายามจำกัดการสนทนาเกี่ยวกับแหล่งที่มา ฟอรัมสนทนามีจุดประสงค์เพื่อให้ใช้งานได้ง่ายขึ้น และการแฮ็กซอร์สโค้ด/การคอมไพล์เนทีฟที่ซับซ้อนมากขึ้นอาจสร้างเสียงรบกวนที่นั่น
ขอขอบคุณผู้คนที่แสนวิเศษเหล่านี้ (คีย์อีโมจิ):
บีเซิล-ปีเตอร์ | เลียนนาแคสเปอร์ | sergeyCodenameOne | โทมัสH99 | ฮาเวียร์ แอนตัน | เพชร | ฟรานเชสโก้ กัลกานี่ |
คุโตมัน | แรมเซสตอม | มาอาร์ตินัส | ดูแรงค์ | ดีเยอร์0 | คาร์ลอสเวอร์ดิเอร์ | โรเบิร์ต เอเดลมันน์ |
อดาลเบิร์ต393 | สตีฟ ฮันนาห์ | ดิกกัปเซปป์ | ปัฟนีต ซิงห์ | วีไพรซ์ | เจอาร์มีเดฟ | เทอร์รี่ วิลคินสัน |
ยานัส แฮนเซน | ยาคอฟ เกเชอร์ | ไมเคิล มันช์ | ซาเดอร์ | มิเกล มูนอซ | อาเหม็ด อาบูมัลวา | ฟาบิโอ |
ปิโอเตอร์ | อ่าวแมทเธียส | ซันนี่ ซานอฟ | แมคซิม28 | เอริค เหลียง | เดวิด เดย์ | นิค ไพรซ์ |
อาห์นาฟ บิน อาซาด | ออคตาบิโอ อี อานิโน | ยาช สิว | นีน่า | FercueNat | ImmediadoSrl | เดวิดพริมาสค์ |
DB107 | อิคโกะ เอลโตเซียร์ อาชิมิเนะ |
โครงการนี้เป็นไปตามข้อกำหนดของผู้มีส่วนร่วมทั้งหมด ยินดีมีส่วนร่วมทุกรูปแบบ!