Java เวอร์ชันต่าง ๆ เหล่านี้มีไว้เพื่ออะไร?


63

ฉันเพิ่งจะเริ่มต้นการเดินทาง Java ของฉัน(ฉัน dabbled แล้วใน C ++) แต่ฉันสับสนจริงๆเกี่ยวกับ Java รุ่นต่างๆทั้งหมด:

  • JavaSE
  • JavaEE
  • JavaFX
  • เป็นต้น

มีคนอธิบายรายละเอียดเหล่านี้ได้ไหม?

คำตอบ:


107

Java เหมาะสม

Java Standard Editionเป็นรุ่น "ปกติ" ที่ออกแบบมาสำหรับการคำนวณทั่วไป มันก็เหมือนกับภาษาอื่น ๆ ทั้งหมดของจาวาเป็นอย่างยิ่งพิมพ์แบบคงที่, bytecode รวบรวมภาษาเชิงวัตถุทำงานบนเครื่องเสมือนกับคอลเลกชันขยะอัตโนมัติเต็มรูปแบบ มันมีคุณสมบัติส่วนใหญ่ของภาษา ตัวอย่างของแอปพลิเคชันจะเป็นแอปพลิเคชันเช่น Minecraft หรือ ArgoUML สามารถเรียกใช้เป็นแอปพลิเคชันเดสก์ท็อปแบบสแตนด์อโลนหรือแอปพลิเคชันที่ฝังอยู่ในเว็บเพจเป็น Applet

Java Enterprise Editionไม่ใช่ภาษาอื่น แต่เป็นข้อกำหนดคุณลักษณะส่วนต่อประสานที่ออกแบบมาเพื่อผลิตซอฟต์แวร์ที่ทำงานภายในการปรับใช้แอพพลิเคชันเซิร์ฟเวอร์ ความแตกต่างที่สำคัญที่นี่คือมันถูกออกแบบมาสำหรับการปรับใช้กับ Application Server ที่สอดคล้องกับข้อกำหนดของ Enterprise Edition Interface; Java SE สามารถใช้เพื่อเขียนเซิร์ฟเวอร์แบบสแตนด์อะโลน แต่ไม่รวมถึงอินเตอร์เฟสแบบอินเทอร์เฟซมาตรฐานและวัตถุประสงค์ของข้อกำหนดที่สร้างขึ้นในแบบที่ Java EE เป็น ตัวอย่างจะเป็นแอปพลิเคชันที่ออกแบบมาเพื่อทำงานบน Glassfish (การใช้งานการอ้างอิง Java EE), JBoss เป็นต้น

Java Micro Editionเป็น Java ที่ออกแบบมาเพื่อทำงานบนอุปกรณ์มือถือ ควรสังเกตว่านี่ไม่ใช่สิ่งเดียวกันกับ Android Java ME ถูกออกแบบมาเพื่อจัดการกับฮาร์ดแวร์มือถือดีกว่า Java SE ฉันใช้ Pantec Ease เป็นโทรศัพท์มือถือมันรัน Java ME

Java Cardนั้น "เล็กกว่า" สำหรับอุปกรณ์ระดับต่ำเช่นการ์ด Smart ATM ใช่บางคนมีจาวาอยู่แล้ว

JavaFXเป็นเฟรมเวิร์กที่ออกแบบมาเพื่อสร้างแอปพลิเคชัน GUI ไคลเอนต์อินเทอร์เน็ตที่สมบูรณ์

ตระกูลภาษา JVM

ครั้งแรกที่JVM นี่คือเครื่องเสมือนสแต็กที่เรียกใช้ bytcode ที่คอมไพล์ซึ่งมีลักษณะเหมือนภาษาแอสเซมบลี การเพิ่มประสิทธิภาพสามารถทำให้มันทำงานได้อย่างรวดเร็วสำหรับสถานการณ์ที่เฉพาะเจาะจง

เพียงเพื่อสิ่ง Oracle Java ที่แท้จริงตอนนี้สำหรับสิ่งที่คนทั่วไปใช้ใน JVM ภาษาเหล่านี้ทั้งหมดมีการเชื่อมต่อ Java และโดยทั่วไปสามารถเรียกไลบรารี Java ส่วนใหญ่หรือทั้งหมดได้

Groovyเป็นภาษาเชิงวัตถุที่มีการพิมพ์แบบไดนามิกและมีไวยากรณ์ที่กระชับยิ่งขึ้น มันได้รับการออกแบบเป็นภาษาเสริมสำหรับจาวาทำให้สามารถลากและวางไฟล์ Java ลงในโปรแกรม Groovy ได้ มันมีกรอบทั่วไปที่เกี่ยวข้องกับมันในการพัฒนาเว็บที่รู้จักกันเป็นGrails

Scalaเป็นภาษาเชิงวัตถุ / ฟังก์ชันลูกผสมที่เพิ่งได้รับการออกแบบมาให้มีความยืดหยุ่นสูงดังนั้นชื่อนี้ Twitter เป็นผู้ใช้งานหนักของ Scala

Clojureเป็นภาษาใช้งานล่าสุด (2007) ของตระกูล Lisp มันถูกออกแบบมาสำหรับการเขียนโปรแกรมพร้อมกันอย่างหนักตั้งแต่เริ่มแรก ฉันไม่มีตัวอย่างซอฟต์แวร์ที่ดีสำหรับอันนี้ แต่มี บริษัท จำนวนมากที่ใช้มัน

JythonและJRubyเป็นรุ่นPythonและRubyของ Java bytecode ตามลำดับ

มีภาษาอื่น ๆ อีกมากมายสำหรับ JVM ที่นั่นเช่นJaskell (Haskell สำหรับ JVM) แต่พวกเขามีแนวโน้มที่จะปิดบัง / การทดลองทางวิชาการ

สิ่งที่เกี่ยวข้อง

Androidใช้ Java แต่ทำงานบนเครื่องที่ลงทะเบียนด้วย Dalvik ปัจจุบัน Dalvik เป็นเป้าหมายของการฟ้องร้อง Google ซึ่งเป็นผู้ยอมรับ Android เป็น Java SE ที่มีชุดไลบรารีที่แตกต่างกัน

NetbeansและEclipseเป็นที่พูดถึงกันอย่างกว้างขวางเกี่ยวกับ Java IDEs การถามคำถามเกี่ยวกับคำถามอื่น ๆ จะทำให้เกิดการปิดและฉันไม่ได้หมายถึงแนวคิดการเขียนโปรแกรม

สิ่งที่ไม่เกี่ยวข้อง

Javascriptไม่ใช่ Java ... เลย มันได้รับการขนานนามว่าให้ใช้ประโยชน์จากความนิยมของจาวาและความสับสนได้สร้างความรำคาญให้กับผู้ใช้

แรดในห้อง

Rhinoเป็นล่าม Javascript ที่เปลี่ยน Javascript Code เป็นรหัส Java ที่สามารถเรียกใช้ที่ไหนสักแห่ง มันไม่ได้เป็นภาษาที่แยกต่างหาก "ต่อ se" แต่เหมือนสิ่งอื่นใดที่มีชุดของนิสัยใจคอของตนเอง Rhino ได้รับการพัฒนาโดย Mozilla เป็นทางเลือกสำหรับล่าม SpiderMonkey โดยทั่วไปจะใช้ Rhino เพื่อฝัง Javascript ภายในโปรแกรม Java

Nashornซึ่งพัฒนาโดย Oracle (อาจมีระดับภาษาเยอรมันที่มีประสิทธิภาพ) สำหรับ JDK 8 ดูเหมือนจะเป็นมาตรฐานใหม่สำหรับ Javascript แบบฝังภายใน Java นี่หมายความว่า Rhino ไม่ได้ใช้สำหรับการใช้งานหลักของ Java อีกต่อไป สิ่งนี้หมายความว่าสำหรับโครงการแรดในเวลานี้


1
ขอบคุณมาก! นั่นคือสิ่งที่ฉันกำลังมองหา :) คำถามอีกข้อหนึ่ง: J2SE, J2EE และอื่น ๆ พวกนี้เป็นรุ่นที่ใหม่กว่าของ SE, EE และอื่น ๆ ?
Patryk

8
ใช่ J2EE และ J2SE เป็นรุ่นที่สองของ Java Enterprise Edition ตามลำดับรุ่นมาตรฐาน รูปแบบการตั้งชื่อนี้ไม่ได้ถูกติดตามอีกต่อไป เวอร์ชันปัจจุบันเรียกว่า Java SE 6 (หรือ 5/7) และ Java EE 5 (หรือ 6)
BenR

1
มี Java สำหรับสมาร์ทการ์ดหรือไม่ ใจกระเด้ง
Megan Walker

1
หนึ่งคำตอบเพื่อปกครองพวกเขาทั้งหมด!
ผู้ใช้

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