change JRE/JDK default version in Mac OS X to Java SE 6 (1.6)

(Update 2009.05.16: add JAVA_JVM_VERSION setting)

To build Nutch 1.0, you need JDK 1.6. Unless you’ll got [javac] class file has wrong version 50.0, should be 49.0 error message.

For a system that has more than one version of JDK installed.
It is possible to change to a desired version only at the time you need it (look for j16 script in this thread). I found myself more convenient with just changed the default version.

เปลี่ยนรุ่นปริยายของ Java Runtime และ JDK ใน Mac OS X ให้เป็น Java SE 6 (1.6)

  1. Install Java SE 6 first. ก่อนอื่น ถ้ายังไม่มี Java SE 6 ในเครื่อง ก็ให้ติดตั้งก่อน.
    โดย Java SE 6 จะอยู่ใน Java for Mac OS X 10.5 Update 2, ดาวน์โหลดได้ที่เว็บไซต์ developer.apple.com/java.
    หรือจะปรับรุ่นผ่าน Software Update ก็ได้.
  2. Run Java Preferences app to set the default version. หลังจากติดตั้งเรียบร้อยแล้ว ก็เรียกโปรแกรม Java Preferences ขึ้นมา (อยู่ใน /Applications/Utilities/Java/ หรือพิมพ์ชื่อลง spotlight เลยก็ได้) เพื่อเลือกว่าจะใช้รุ่นไหนก่อนหลัง. ใช้วิธี ลาก วาง. เสร็จแล้วก็ออกจากโปรแกรม.
  3. Point CurrentJDK dynamic link to 1.6. ไปตั้ง dynamic link ของไดเรกทอรี CurrentJDK ให้ชี้ไปหารุ่นที่ต้องการด้วย. เช่น ถ้าอยากให้ 1.6 เป็นรุ่นปริยาย ก็ทำแบบนี้ :
    cd /System/Library/Frameworks/JavaVM.framework/Versions
    sudo rm CurrentJDK
    sudo ln -s 1.6 CurrentJDK
  4. Set JAVA_JVM_VERSION environment variable. ใน ~/.profile ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_JVM_VERSION เป็นรุ่นที่ต้องการ โดยเพิ่มบรรทัดนี้เข้าไป :
    export JAVA_JVM_VERSION=1.6
  5. [optional ไม่ทำก็ได้] Set JAVA_HOME environment variable. ใน ~/.profile อาจจะตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME ไว้ด้วย เพิ่มบรรทัดนี้เข้าไป :
    export JAVA_HOME=/Library/Java/Home
  6. [optional แล้วแต่] Set Applet Preferences. ถ้าอยากแก้อะไรกุ๊ก ๆ กิ๊ก ๆ เกี่ยวกับการรันแอปเพล็ต ก็เข้าไปแก้ได้ที่แฟ้ม ~/Library/Caches/Java/deployment.properties. ดูวิธีที่ Java for Mac OS X 10.5 Update 2: Setting Java Applet preferences. เช่น อาจแก้ให้ใช้ font-smoothing/anti-alias กับทุกแอปเพล็ตเลย ก็เพิ่มบรรทัดนี้เข้าไป :
    javaplugin.smoothText=true

เสร็จแว้ว

แถม : สำหรับคนที่ใช้ MacPorts, Porticus เป็น GUI ที่สะดวกดี. (ประมาณ apt กับ Synaptic Package Manager, แต่ Porticus โง่กว่านิดนึง)

technorati tags: 

Open source Java port for Mac OS X

Open Source Java 6 port สำหรับ Mac OS X มาแล้ว (รุ่น Developer Preview Release 2) ใช้ได้ทั้งบน Mac OS X 10.4 และ 10.5 ทั้ง 32-bit และ 64-bit

Java 6 port สำหรับ Mac OS X ตัวนี้ ไม่ได้มาจาก Apple แต่มาจากนักพัฒนาอิสระชื่อ Landon Fuller
โดยใช้โค้ดจาก BSD Java port (Mac OS X มีหลายส่วนที่พัฒนาจาก BSD) ซึ่งใช้สัญญาอนุญาต Java Research License (มาจากเจรจาระหว่างโครงการ FreeBSD และ Sun)

Landon มีแผนจะส่งโค้ดนี้เข้าโครงการ BSD Java port ต่อไป และโครงการ BSD Java port เองก็มีเป้าหมายที่จะรวมงานของตนเข้ากับโครงการ OpenJDK
(ซึ่งใช้สัญญาอนุญาต GPLv2+Classpath Exception)

ในเว็บไซต์ของ Landon Fuller มีโชว์ Puzzle Pirates ที่รันบน Java 6 port ตัวนี้ด้วย ผมชอบเกมนี้มาก เคยติดงอมแงมอยู่พักนึง
นอกจากนี้ก็มีภาพ Eclipse (ตัวอย่างของแอพพลิเคชั่น SWT) ที่ใช้ Carbon ด้วย

Charles Nutter นักพัฒนา JRuby ได้ทดสอบ Open Source Java 6 port ตัวนี้กับ JRuby
พบว่าในการทดสอบเลขคำนวณจำนวนเต็ม (fibonacci test)
JRuby trunk บน open source Java 6 port มีประสิทธิภาพดีกว่าบน Apple JDK 6 preview และตามหลัง Ruby 1.9 (native) ไม่ไกลนัก
และหากให้ JRuby trunk บน open source Java 6 port ทำงานในโหมด frameless execution แล้วมันจะมีประสิทธิภาพดีกว่า Ruby 1.9 อยู่เล็กน้อย

ส่วนในการทดสอบ MatrixBenchmark
JRuby บน open source Java 6 port ทำงานเร็วกว่า Ruby 1.9 อยู่ราว 25%

แบบนี้นักพัฒนา (จาวา) จำนวนหนึ่งอาจจะยังใช้ Mac OS X 10.4 ต่อไปได้อีกสักพักใหญ่ ๆ เลยล่ะ ไม่ต้องง้อ Apple แล้วเรื่อง JDK — เว้นว่าถ้าอยากจะเขียนโปรแกรมที่ใช้หน้าตาแบบ Cocao ด้วย Java อันนั้นก็อีกเรื่องนึง แต่ถ้าเป็นเรื่องที่ไม่เกี่ยวกับ UI ก็สบายแล้ว

(ตะกี้ได้กิน “ก๊อบ กอบ” ครั้งแรกในรอบหลายปี ได้รสชาติที่ต่างไปจากเลย์จริง ๆ เบื่อเลย์ ตอนแรกจะหยิบเทสโต แต่เหลือบไปเห็นก๊อบ กอบ ซะก่อน ได้เยอะกว่าด้วย มากกว่าตั้ง 10 กรัม :P)

[ ลิงก์ Landon Fuller | ผ่าน Slashdot ]

technorati tags: 

Apache Harmony 5.0 M1

มาแว้ว~ อาปาเช่ฮาร์โมนี จาวารันไทม์ในสัญญาอนุญาตแบบอาปาเช่ (ตัวที่ซันโอเพนซอร์สนั้น ใช้ GPL)

Apache Harmony 5.0 นี้ ตั้งเป้าให้เป็น “compatible, independent implementation” ของสเปค Java SE 5 (เช่นเดียวกับของที่ Sun, IBM, BEA ฯลฯ ทำ) โดยใช้ Apache License v2

นอกจากนี้ ยังเสนอสถาปัตยกรรมรันไทม์แบบแยกชิ้นส่วนได้ (modular runtime) ทั้งในส่วนของ VM และ class library, ตัวอย่างเช่น สามารถนำ class library ของ Apache Harmony ไปใช้กับ JRockit VM ของ BEA ได้

ดู Java stack ทางฝั่งที่ใช่สัญญาอนุญาตแบบอาปาเช่แล้ว ครบครันจริง ๆ

[ลิงก์ Apache Harmony | ผ่าน OSNews.com]

technorati tags: 

OpenOffice.org 2.1 + Java SE 6

ออกแล้ว Java SE 6 และ OpenOffice.org 2.1

Java SE 6 นี่ ความสามารถใหม่ ๆ เน้นไปที่เดสก์ทอป หน้าตาที่ดูดีขึ้น และทำงานได้แนบสนิทกับตัวโอเอสพื้นถิ่นมากขึ้น นอกจากนี้สำหรับนักพัฒนาก็มีเรื่องการใช้งานภาษาแบบสคริปต์ (มีตัวแปลภาษา JavaScript มาในตัว) เรื่องเว็บเซอร์วิส และบน Solaris ก็ใช้กับ dTrace ได้

ส่วน OpenOffice.org 2.1 ก็พัฒนาเรื่องการใช้ Access จาก Base, Impress ต่อหลายจอได้, Calc ส่งออกไฟล์ HTML ได้ดีขึ้น, มีภาษาเพิ่มขึ้น, และการปรับปรุงโปรแกรมอัตโนมัติ

Picasa 2 ก็ออก

update: OpenOffice.org มีแม่แบบเอกสารกับคลิปอาร์ตใหม่ ๆ ให้ดาวน์โหลดด้วย

tags: , ,

Official – Sun to Open-Source Java

“ Yes, we really are going to open-source the JDK ”

คราวนี้ของจริง ประกาศเองเลย ไม่ใช่ข่าวลือ พร้อมกำหนดเดือนเรียบร้อย
สัญญาอนุญาตยังไม่ประกาศว่าจะเอาแบบไหน แต่เป็น OSI-approved แน่
(และถ้าเกิดสงสัย, สัญญาแบบ CDDL ก็เป็น OSI-approvedวิกิพีเดีย: “The CDDL is one of the 9 preferred licenses listed by the OSI.”)

Hotspot VM (เวอร์ชวลแมชชีน/รันไทม์) กับ javac (คอมไพเลอร์) จะเปิดเดือนตุลาคมนี้ ส่วนที่เหลือจะตามมาต้น ๆ ปีหน้า

ข้างบนนั่นคือ Java SE แต่ไม่ได้มีแค่นั้น ยังมี Java ME ด้วย ภายในปลายปีนี้
(ส่วน Java EE นั้นเปิดโค้ดไปนานแล้ว ในชื่อ GlassFish ใช้สัญญา CDDL)

จากข่าวนั้น จะมีบางส่วนของโค้ด Java SE ที่ไม่ได้เปิด เนื่องจากไม่ใช่สิทธิของซัน เช่นโค้ดเกี่ยวกับ Font Rasterizer โดยจะแจกจ่ายในรูปไบนารีแทน และสามารถใช้ build ตัว Java SE ได้แน่นอน

ติดตามข่าวคราวความเคลื่อนไหวได้จากเว็บไซต์เฉพาะที่เพิ่งเปิดใหม่
— a community site for open sourcing Sun Java implementation

ความเห็นที่ Blognone

via slashdot, osnews

tags: , , ,

JavaScript in Java 6

อย่างที่พอจะรู้กันบ้างแล้ว ว่า Java 6 จะใช้รองรับภาษาสคริปต์อย่างเป็นทางการ (ในตัว API เลย โดยจะอยู่ในแพคเกจ javax.script แล้วก็มีเครื่องมือสนับสนุนอื่น ๆ อีก) วันนี้เผอิญไปเห็นสไลด์เกี่ยวกะเรื่องนี้ เลยเอามาฝาก: Scripting for Java Platform (JavaOne 2005)

นอกจากการเรียกใช้ภาษาสคริปต์ภาษา API ได้แล้ว ในส่วนของเครื่องมือ (ซึ่งจะมาพร้อมกับ Java 6 SDK แต่ไม่ได้เป็นส่วนหนึ่งของสเป็ค Java 6 SE) จะมีโปรแกรมเพิ่มขึ้นมาตัวนึงสำหรับเรื่องนี้โดยเฉพาะ คือ jrunscript (กดเพื่อดูวิธีใช้) เอาไว้รันสคริปต์จากคอมมานด์ไลน์ (ค่าปริยายเป็น JavaScript แต่จะระบุภาษาอื่นก็ได้)

ตัวอย่าง:

ผ่านคำสั่งเป็นพารามิเตอร์ (เหมือนพวก Perl)

jrunscript -e "print('hello world')"

ระบุภาษาด้วยออปชั่น -l / เรียกชุดคำสั่งจากไฟล์

jrunscript -l js -f test.js

ตัว ScriptEngine ที่จะมากับ Java 6 ก็คือเอนจิ้นของภาษา JavaScript ซึ่งพัฒนามาจากตัว Mozilla Rhino

ตัว NetBeans IDE รุ่นหน้า (หลัง 5.5) ก็จะมี JavaScript editor ด้วย แต่ถ้ารอไม่ไหว มีคนทำออกมาแล้ว ใช้กับ NetBeans 5 ได้เลย

ช่วงนี้ไปไหนก็มีแต่ JavaScript … อะไร ๆ ที่ Netscape ทำมันมักจะเป็นอย่างนี้รึเปล่า ? ต้องดังวูบนึงก่อน แล้วก็ฟุบ แล้วค่อยฟื้นมาใหม่ 😛

A Talk by Bruce Eckel: Java Issues & Directions

A talk given at UC Berkeley, Haas School of Business, on June 25, 2004.

Bruce is an author of very famous Thinking in C++ and Thinking in Java books.

streaming video (2 hrs 16 mins)

on first 50 mins, he covers

  • garbage collection is the way for new languages to go — program managability
  • problems with Java’s checked exception
  • Java just has too many ‘words’ (too long code) — maintainability
  • classpath nightmare — At the very least we need a equivalent of “which” (in Unix)
  • Applets have failed
  • Truly “Write Once, Run Anywhere” from other camps — Microsoft XAML + Aurora vs Macromedia Flash + MXML + Flex
  • Java on Desktop
  • Eclipse 3.0 as a rich client platform
  • Java is good on server
  • developers: write once learning curve (Java is bad. too complex)
  • users: seamlessly run anywhere (Java is bad, too complex)
  • JDK 5.0 new features: generics, autoboxing, enumerations, attributes/metadata, new concurrency, syntax improvements (e.g. for-each) — competition is good

with a lot mentionings to Python