>>> Let's run Python on Mobile

วันพุธ, มีนาคม 29, 2549

Java Programming with JDK1.1

เขียนโปรแกรมสำหรับ WindowsMobile SmartPhone ด้วย Java

การเขียนโปรแกรม Java สำหรับ PersonalJava ใน Smartphone
เราจะเขียนในลักษณะที่เป็น Java Application (ไม่ใช่J2ME)
ถ้าโปรแกรมไม่ซับซ้อน ไม่ specific อะไรมากมาย
โปรแกรมที่เขียนขึ้นจะสามารถ run ได้ทั้งบน Smartphone และ บน PC เลย

ถ้าคุณจะหัดเขียนโปรแกรม Java ในวันนี้
ผมก็แนะนำให้ใช้ JDK 5.0 (เทียบได้ประมาณ Java1.5 มั้ง?)
แต่เนื่องจาก PersonalJava เป็น Java1.1
ดังนั้น การเขียนโปรแกรมไว้ใช้กับ PersonalJava ก็ต้องใช้ JDK version 1.1 ด้วย
JDK1.1 นี้ถึงแม้จะเป็น JDK ตัวเก่า แต่ก็มีข้อดีหลายๆอย่างเช่น
-โปรแกรมที่เขียนส่วนใหญ่ run บน Java version ใหม่ๆได้ด้วย
-JDK1.1 ขนาดเล็ก (แค่8Mb) D/L ง่าย
(JDK5.0+NetBeanIDE ขนาดประมาณ 130Mb)
-Javaที่อยู่บน Browser รุ่นเก่าๆ (แต่ยังมีใช้กันอยู่) เป็นJava1.1

เริ่มจากD/L JDK1.1 จากที่นี่
http://java.sun.com/products/archive/jdk/1.1.8_006/index.html
D/Lมาแล้วจะได้ไฟล์ jdk-1_1_8_006-windows-i586.exe
คลิกเพื่อติดตั้ง

คลิก jdk-1_1_8_010-windows-i586.exe เพื่อติดตั้ง

ถ้าทำตามขั้นตอนไปเรื่อยๆ จะติดตั้ง JDK1.1 ไว้ที่
C:\jdk1.1.8

กรณีจะติดตั้ง JDK1.1 ไว้ที่ C:\jdk1.1.8

คงไม่ต้องแนะนำเรื่องภาษา Java นะครับ
เพราะปัจจุบัน หนังสือ Java ที่เป็นภาษาไทย มีอยู่มากมาย
มาดูตัวอย่างกันเลยดีกว่า
สมมติคุณมี Code ประมาณนี้

เป็นการสร้าง Frame ขนาด 170x100 pixels
มีคำว่า Hello World บน title-bar และปิด Frame เมื่อกดปุ่มใดๆ

save Codeไว้ที่ C:\ เป็นชื่อ Hi.java
set path = C:\jdk1.1.8\bin (เผื่อว่าคุณอาจลง jdk ไว้หลายตัว)

compile ด้วยคำสั่ง
javac Hi.java
จะได้ไฟล์ Hi.class ออกมา
run ด้วยคำสั่ง
java -classpath ".;C:\jdk1.1.8\lib\classes.zip" Hi

ถ้าคุณจะนำไป run บน SmartPhone (ที่ลงPersonalJava)
ก็ใช้ Notepad สร้างไฟล์ ที่มีอักษรประมาณนี้ (ไม่มีการขึ้นบรรทัดใหม่)

211#"\Storage\pjava\bin\pjava.exe" -classpath "\Storage\pjava" Hi

แล้ว save เป็นไฟล์ชื่อ Hi.lnk (ด็อท-เอล-เอ็น-เค)
ต่อมานำไฟล์ทั้งสอง (Hi.lnk ,Hi.class) ไปไว้ใน SmartPhone ที่
\Storage\pjava
เวลาจะrun ก็ใช้ SmartExplorer คลิกที่ Hi.lnk

ไม่ยากเลยใช่มั้ยครับ
(สงสัย จะยากก็ตรงเขียน Java Code นี่แหละ)

ตัวอย่าง Code
hi.zip

วันจันทร์, มีนาคม 27, 2549

ลง PersonalJava ใน WindowsMobile SmartPhone

Step by Step
หลังจากลองใช้มาได้สักระยะ ผมก็รู้สึกชอบ PersonalJava มากขึ้นเรื่อยๆ
เลยจะขอแนะนำวิธีติดตั้ง,วิธีใช้กับ WindowsMobile SmartPhone
( เครื่องรุ่นที่ผมใช้เป็น WindowsMobile2003SE รุ่นอื่นก็น่าจะใช้ได้ )

บอกไว้ก่อนเลยว่า PersonalJava ไม่ใช่ Java2ME
ดังนั้นเอาพวก ไฟล์ .jar,.jad แบบของโทรศัพท์มือถือทั่วไป มาลง ไม่ได้แน่นอน
แต่ มันมีความสามารถเหนือ J2ME ในหลายๆด้าน เช่น การอ่านเขียนไฟล์ ,awt ,swing ,jni
เปรียบเทียบแล้ว PersonalJava ก็ ประมาณ Java1.1
( specใกล้เคียงกับ Java1.1 บน PC )
อาจจะฟังดูค่อนข้างเก่า แต่ก็มีข้อดีคือ โปรแกรมที่เขียนไว้ run บน PersonalJava จะสามารถนำมา run บน PC ที่ติดตั้ง Java version ใหม่ๆได้ด้วย
สรุป ก็คือเหมาะสำหรับผู้สนใจจะเขียนโปรแกรมไว้ใช้เองบน SmartPhone
ด้วยภาษา Java
ผมลองแล้วใช้ได้กับภาษาอื่นๆที่ port มาลง Java ได้ด้วย เช่น
Python (Jython)
JavaScript (Rhino)
(ว่าจะลอง NetREXX กับ Scheme ต่อ แต่ยังเขียนไม่เป็น.)

มาเริ่มกันเลยดีกว่า
ขั้นแรก คุณต้องหาโปรแกรม PersonalJava มาให้ได้ซะก่อน
ก็เคย D/L ได้จาก website ของ Sun ในสมัยก่อน แต่ตอนนี้หาไม่เจอแล้ว
พอจะหาได้บ้างโดยใช้ Google
click here to search for pjavawince-1_1-beta1-arm.zip
ลองค้นๆดูครับไฟล์ชื่อ pjavawince-1_1-beta1-arm.zip
ได้มาแล้วเปิดดูด้วย Winzip หรือ WinRar จะพบไฟล์ชื่อ pjavawince.arm.CAB อยู่ภายใน

ภายใน pjavawince-1_1-beta1-arm.zip

ไฟล์ pjavawince.arm.CAB นี้ มีไว้สำหรับติดตั้ง PersonalJava ลงใน PocketPC
ดังนั้นมันคงไม่ยอมลงไปอยู่ใน SmartPhone ง่ายๆ
วิธีติดตั้ง PersonalJava ลง WindowsMobile SmartPhone แบบง่ายที่สุดก็คือ
นำไฟล์ชื่อ pjavawince.arm.CAB ไปติดตั้งใน PocketPC ให้เรียบร้อยก่อน
แล้วแงะไฟล์ที่ต้องการออกมา ได้แก่ ไฟล์ชื่อ
javai.dll
pjava.exe
wceCompat.dll

3ไฟล์ที่ต้องการ ภายใน PocketPC

แต่ถ้าคุณไม่มี PocketPC ก็ลองทำตามวิธีถัดไปนี้
ใช้ WinRar เปิดไฟล์ชื่อ pjavawince.arm.CAB จะพบไฟล์ และโฟลเดอร์มากมาย อยู่ภายใน
มองหาไฟล์ชื่อ 000javai.001 แล้ว copy มันออกมา
ต่อมาเข้าไปใน โฟลเดอร์ชื่อ wce300 จะมี 2 ไฟล์ อยู่ภายใน
ชื่อ WCECOM~1.016 และ pjava.015 ให้ copy มันออกมา
3 ไฟล์ ที่ได้นี้แหล่ะ เป็นไฟล์ที่เราต้องการ

เปิดไฟล์ pjavawince.arm.CAB
มองหาไฟล์ชื่อ 000javai.001


ใน โฟลเดอร์ชื่อ wce300
มองหาไฟล์ชื่อ WCECOM~1.016 และ pjava.015

ขั้นถัดไปก็ rename
000javai.001 ไปเป็น javai.dll
pjava.015 ไปเป็น pjava.exe
WCECOM~1.016 ไปเป็น wceCompat.dll
ดังรูป ข้างล่างนี้

จัดการ Rename

ขั้นถัดไปก็นำไฟล์ทั้งสาม ที่ได้มาไปใส่ใน SmartPhone
แนะนำให้ใส่ไว้ใน Phone นะครับ (ในโฟลเดอร์ \Storage\pjava\bin)
ผมเคยลองใส่ไว้ใน Storage Card แล้ว มันเปิดโปรแกรมช้ามากๆ

ใน Smartphone ในโฟลเดอร์ \Storage
ให้สร้าง โฟลเดอร์ใหม่ชื่อ \pjava
ในโฟลเดอร์ \pjava ให้สร้าง โฟลเดอร์ใหม่ลงไปอีกชั้นชื่อ \bin

จะได้เป็น \Storage\pjava\bin ให้นำไฟล์ ทั้ง3มาไว้ใน โฟลเดอร์นี้
ดังรูป

นำไฟล์ ทั้ง3มาไว้ใน \Storage\pjava\bin

เท่านี้ก็เรียบร้อย
ต่อไปก็วิธี run โปรแกรม
สมมติคุณได้โปรแกรมชื่อ test.class มา
ให้ใช้ Notepad สร้างไฟล์ชื่อ test.lnk มีตัวอักษรดังนี้

205#"\Storage\pjava\bin\pjava.exe" -classpath "\Storage\pjava" test

ทั้งหมดนี้ไม่มีการขึ้นบรรทัดใหม่นะครับ ให้เรียงกันไปในบรรทัดเดียว
เลขข้างหน้า เป็นเลขอะไรก็ได้ ตามด้วยเครื่องหมาย #
แล้วตามด้วย path ของ pjava
วรรค แล้วตามด้วย -classpath
แล้วตามด้วย path ของ ไฟล์ .class
(เป็นการบอกว่า จะหา ไฟล์ .class ได้จากที่ไหน)
วรรคอีกครั้ง แล้วตามด้วยชื่อของ ไฟล์ .class (ไม่ต้องเขียนนามสกุล)

ต่อมานำไฟล์ ทั้งสอง คือ test.class และ test.lnk
ไปไว้ในโฟลเดอร์ \Storage\pjava
เวลาเรียกโปรแกรมก็เปิดโปรแกรมพวก SmartExplorer ใน Smartphone
แล้วคลิกที่ test.lnk

คลิกด้วย SmartExplorer

ตัวอย่างถัดไป สมมติคุณได้ไฟล์ testjar.jar ที่มี testjar.class อยู่ภายใน
ไฟล์ testjar.lnk ก็จะเป็น
206#"\Storage\pjava\bin\pjava.exe" -classpath "\Storage\pjava\testjar.jar" testjar

ผมเตรียมไฟล์ทดสอบไว้ที่นี่ครับ
testjava.zip
ถ้าติดตั้ง PersonalJava เรียบร้อยแล้ว D/L มาทดลองได้

ทดสอบโปรแกรม

ถ้าคุณใช้ภาษา java เป็น
ก็สามารถD/L jdk1.1 มาเขียนโปรแกรมไว้ใช้เองได้ครับ

วันพฤหัสบดี, มีนาคม 16, 2549

MobiLenin เวบดีๆสำหรับ Python on Symbian S60

อีกหนึ่ง website ดีๆสำหรับ Python for Symbian S60
http://www.mobilenin.com/
พร้อม Tutorial และตัวอย่าง script (ไฟล์ .py) ให้ D/L

วันพุธ, มีนาคม 15, 2549

โทรศัพท์มือถือของGuido van Rossum

โทรศัพท์มือถือของGuido van Rossum
Guido van Rossum ผู้สร้างภาษาPython รู้สึกว่าเขากำลังใช้ Nokia 6630 อยู่นะครับ (อภินันทนาการ จาก Nokia) แต่ไม่รู้ใช้เป็นเครื่องหลักหรือเปล่า
ลองอ่าน ความรู้สึกของGuido van Rossum เมื่อได้ลองใช้ Python for Symbian ได้ที่นี่ครับ
http://www.artima.com/weblogs/viewpost.jsp?thread=148064

วันศุกร์, มีนาคม 10, 2549

Rhino - JavaScript (on SmartPhone)

อยากรู้เหมือนกัน ว่า PersonalJava จะทำอะไรได้สักแค่ไหน
เลยลองเอา Rhino มาลงเล่น
Rhino เป็น JavaScript (Interpreter) ที่เขียนขึ้นด้วย Java ล้วนๆ
มีความสามารถสูงกว่า JavaScript บน Browser มากมาย
เนื่องจากมันสามารถควบคุมคำสั่งของ Java API ได้
ไม่ว่าจะเป็น awt,swing,อ่าน-เขียนไฟล์
และยังมี InterActive Console คล้ายๆกับที่มีใน Python
ผมลองแก้ไข Source code แค่2ไฟล์ ก็นำ Rhinoมาลงเล่นใน MS SmartPhone ได้แล้ว

Rhino - JavaScript นำมาลงใน MS SmartPhone

เมื่อปีที่แล้ว ผมหาไม่เจอ Script Languageให้เล่นบน MS SmartPhone เลยสักอย่าง
(จริงๆ ก็มีให้ใช้อยู่ไม่รู้ทำไมมองไม่เห็น)
เวลานี่มีทั้ง Jython(Java+Python) และ Rhino(JavaScript) น่าสนุกจริงๆ

Hello World เรียกจาก
JS swing console

วันพฤหัสบดี, มีนาคม 02, 2549

Jython AWT-Console

หลังจากนั่งแกะcode จนปวดหัวมาหลายวัน
ผมก็ทำได้สำเร็จ
Jython AWT-Console

Java console ที่ปรากฎขึ้นมาทีแรก มันค่อนข้างเล็ก และไม่สะดวกในหลายๆด้าน
เลยลองค้นๆดูว่ามีคนเคย ทำ Jython Console ที่เป็นGUI หรือยัง
ก็เจออยู่บ้าง
Jcrust ดัดแปลงมาจาก
Jython Console with Code Completion (ซึ่งดัดแปลงมาจาก PyCrust อีกที)
เป็น Swing ทั้งนั้นเลย


แล้ว PersonalJava บน Microsoft SmartPhone มันเป็น Java1.1 จะใช้ Swing ได้หรือเปล่า
ค้นดูในตำราของ ดร.วีระศักดิ์ มีเขียนไว้ว่าให้หาไฟล์ ชื่อ swingall.jar มาลง
ผมลองทำตามก็ใช้ได้เลย
เลยได้เคล็ดวิชามาอีกหนึ่งอย่าง คือการใช้ swing ใน PersonalJava บน Microsoft SmartPhone

ผมแก้ไขเพียงไม่กี่บรรทัด ก็นำเอา Jython Console with Code Completion แบบ Swing มาใช้บน Microsoft SmartPhone ได้สำเร็จ
แต่มันใช้เวลา Startup ช้ามากๆ และต้องใช้ปุ่มtab (ซึ่งผมหาไม่เจอบนSmartphone)

Swing Jython Console

เลยลองเขียนใหม่เป็น AWT ซึ่งก็ใช้ได้ดี ใกล้จะเสร็จเรียบร้อยแล้ว
อีกสักพักจะค่อยๆแนะนำวิธีติดตั้ง+วิธีใช้ ครับ