บริษัท ของคุณคิดที่จะเปลี่ยนจากจาวาเป็นเทคโนโลยีอื่นหรือไม่? [ปิด]


9

ดังที่นักพัฒนา Java ทุกคนรู้ว่า Oracle ซื้อ Sun และอนาคตของ javaดูเหมือนไม่ชัดเจนโดยเฉพาะอย่างยิ่งเนื่องจาก Oracle ต้องการสร้างรายได้ JVM ภาษาจาวาในฐานะที่เป็นภาษาก็ยังคงค้างในช่วงไม่กี่ปีที่ผ่านมาการไม่รวมการปิดเป็นตัวอย่างหนึ่ง (ซึ่งอาจรวมอยู่ในจาวา 1.8) ในเวลาเดียวกันมีการใช้เทคโนโลยีใหม่บางอย่างเช่น Ruby, Scala และ Groovy เพื่อส่งมอบเว็บไซต์ที่ซับซ้อน

ฉันสงสัยว่ามี บริษัท หรือองค์กรที่กำลังพูดคุยทำหนามแหลมหรือเริ่มใช้เทคโนโลยีที่แตกต่างด้วยความคิดที่จะหยุดการใช้จาวาสำหรับโครงการกรีนฟิลด์ในลักษณะเดียวกันกับที่ 15 ปีที่แล้ว บริษัท ย้ายจาก C ++ และเทคโนโลยีอื่น ๆ กับ Java ฉันยังสนใจที่จะรู้ว่าสิ่งที่เป็นความประทับใจของสิ่งนี้เกิดขึ้นเช่น: การวางแผนที่จะย้ายไปยังเทคโนโลยีที่แตกต่างใน 2 ปี

เพื่อความชัดเจนฉันไม่ได้ถามว่าเทคโนโลยีไหนดีกว่า ฉันกำลังถามว่าองค์กรของคุณกำลังคิดจะออกจาก Java สำหรับเทคโนโลยีอื่นหรือไม่


1
Groovy และ Scala ไม่ได้ขึ้นอยู่กับ JVM ใช่หรือไม่ ถ้าเป็นเช่นนั้นพวกเขายังเป็นห่วงโดย Oracle ต้องการสร้างรายได้ JVM
POSIX_ME_HARDER

คุณถูก. ที่จะมีผลกระทบต่อการยอมรับ Scala, Groovy หรือ JRUby ใน บริษัท ที่ต้องการ jvm เชิงพาณิชย์แทน jvm แบบเปิด ฉันจะทิ้งคำถามเดิมไว้โดยไม่มีใครแตะต้องเพราะฉันคิดว่าบาง บริษัท อาจยินดีจ่าย JVM เชิงพาณิชย์เพื่อใช้ภาษาอื่น
Augusto

ในฐานะนักพัฒนา Java ฉันมีปัญหากับคำสั่ง "ตามที่นักพัฒนา Java ทุกคนรู้" ฉันคิดว่าอนาคตของ Java มีทั้ง a) ชัดเจนและ b) สดใส ฉันแน่ใจว่าบางคนอาจต้องการจ่ายเพิ่มสำหรับแพ็คเกจการสนับสนุน "พรีเมียม" ของ Oracles แต่สำหรับพวกเราที่เพิ่งวางแผนที่จะเกาะติดกับ Java เวอร์ชันโอเพนซอร์ซฟรี (ซึ่งไม่ได้หายไป!) ค่อนข้างไม่เกี่ยวข้อง
mikera

Mikera, คุณพูดถึงโอเพ่นซอร์ส, แต่นักพัฒนาจาวาที่มีอิทธิพลบางคนที่เคยเป็นผู้นำโครงการโอเพ่นซอร์ส, กำลังเป็นผู้นำโครงการในภาษาอื่น ๆ , ดังนั้น "พลังงาน" ของพวกเขาจึงถูกเบี่ยงเบนไปจากจาวา ตรวจสอบกรอบที่น่าทึ่งทั้งหมดที่มีอยู่สำหรับ Scala, Groovy หรือ Ruby ฉันไม่มีตัวเลขในการสำรองข้อมูล แต่อาจเป็นที่น่าสนใจที่จะตรวจสอบว่ามี "บรรทัดของโค้ด" จำนวนเท่าใดที่มีความมุ่งมั่นในที่เก็บโอเพนซอร์ซในภาษาหลักที่แตกต่างกันและแนวโน้ม
Augusto

คำตอบ:


9

ไม่เลย - จริง ๆ แล้วฉันลงทุนอย่างมากใน Java เป็นแพลตฟอร์มที่ บริษัท ของฉัน (เริ่มต้นพัฒนาแอพพลิเคชั่น SaaS และเครื่องมือสำหรับการขุดข้อมูล)

นี่คือเหตุผล:

  • การเลือกJava เป็นแพลตฟอร์มไม่ได้หมายความว่าคุณต้องใช้ Java เป็นภาษา เราใช้Clojureเป็นภาษาหลักในการพัฒนาแอพพลิเคชั่นซึ่งบางครั้งก็ถูกส่งไปยัง Java เมื่อจำเป็น แต่ภาษา JVM อื่น ๆ เช่น Scala และ Groovy ก็ยอดเยี่ยมเช่นกัน

  • ส่วนตัวผมไม่ได้กังวลเกี่ยวกับออราเคิล การใช้งานหลักของ Java จะยังคงเป็นโอเพ่นซอร์ส ( OpenJDK ) และสามารถใช้ได้อย่างอิสระ ถ้าออราเคิลทำอะไรโง่ ๆ บริษัท ยักษ์ใหญ่อื่น ๆ (โดยเฉพาะฉันกับไอบีเอ็มและกูเกิ้ล) มีการลงทุนมากเกินไปในจาวาที่จะปล่อยให้มันหนีไปและพวกเขาก็สามารถพัฒนา Java ได้อย่างง่ายดายโดยไม่ต้องอาศัยความช่วยเหลือจาก Oracle

  • JVM เป็นสภาพแวดล้อมการดำเนินการที่ดี ข้ามแพลตฟอร์มประสิทธิภาพสูงมากเทคโนโลยี JIT ที่เหมาะสมที่สุด มันใกล้เคียงกับความเร็วดั้งเดิมที่ฉันไม่สนใจเกี่ยวกับจำนวนเศษส่วนที่ช้ากว่า C / C ++ และค่าใช้จ่ายนี้มากกว่าการชดเชยโดยการรวบรวมขยะที่เหมาะสมและสภาพแวดล้อมในการดำเนินการตามการจัดการตามรหัส ฯลฯ

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

  • Eclipseเป็น IDE ที่ยอดเยี่ยมและเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการพัฒนาแอพพลิเคชั่นระดับองค์กร เราใช้การรวม Maven, JUnit, Git / SVN และโฮสต์ของเครื่องมืออื่น ๆ ที่มีให้ใช้งานเป็นปลั๊กอิน Eclipse ทุกอย่าง "ใช้งานได้"

ในที่สุดตัวเลือกอื่น ๆ คืออะไร?

  • .NET เป็นแพลตฟอร์มเดียวที่มีความสามารถในการเทียบเคียงและฉันชอบ C # เป็นการส่วนตัว แต่จะล็อคคุณเข้ากับเทคโนโลยีของ Microsoft (แย่กว่า Oracle / IBM IMHO) และไม่มีความหลากหลายของระบบนิเวศโอเพนซอร์สแบบเดียวกัน ใช้ได้สำหรับร้านค้า Microsoft แต่ไม่ใช่ถ้าคุณต้องการควบคุมชะตากรรมทางเทคโนโลยีของคุณเอง และใช่ Mono น่ารัก แต่ฉันไม่สามารถเดิมพันธุรกิจของฉันบนแพลตฟอร์มที่อาจหรืออาจจะไม่สามารถรักษาระดับการทำงานร่วมกันได้กับกระแสหลัก NET

  • จากนั้นมีภาษาที่ยอดเยี่ยมอื่น ๆ ที่ดีมากในสิ่งที่พวกเขาทำ (เช่น Ruby, Python, PHP, Javascript) แต่ไม่มีข้อเสนอที่น่าดึงดูดและครอบคลุมเทียบเท่ากับแพลตฟอร์ม Java ความเสี่ยงคือคุณต้องเริ่มติดกาวหลายอย่างเข้าด้วยกันในสถาปัตยกรรมที่สวยงามน้อยกว่าเล็กน้อย ไม่ใช่ปัญหาในการสร้างเว็บไซต์แอปที่รวดเร็วและสกปรก แต่น่าดึงดูดน้อยกว่าสำหรับการพัฒนาผลิตภัณฑ์ในระยะยาว

  • C / C ++ นั้นยอดเยี่ยมสำหรับการเขียนโปรแกรมระบบและเกม แต่ซับซ้อนเกินไป / แพงเกินไป / ไม่ยืดหยุ่นสำหรับการพัฒนาเว็บแอปพลิเคชั่นที่ทันสมัย

  • แล้วก็มีภาษาที่สวยงามที่ฉันชอบเหมือน Haskell ซึ่งยอดเยี่ยมจากมุมมองทางวิชาการ แต่เพียงแค่ไม่มีการนำไปใช้ในอุตสาหกรรม / ระบบนิเวศที่จำเป็นเพื่อให้เป็นทางเลือกแพลตฟอร์มที่น่าเชื่อถือ นอกจากนี้ฉันจะได้รับประโยชน์สูงสุดจากการเขียนโปรแกรมการทำงานที่ทันสมัยโดยใช้ Clojure บน JVM .....

ใช่มันเป็นการตัดสินใจที่ซับซ้อน แต่ฉันได้ตัดสินใจ Java เหนือตัวเลือกอื่น ๆ ทั้งหมดหลังจากการวิจัยและการพิจารณาเป็นจำนวนมาก ฉันยังคงตัดสินใจอย่างเดียวกันวันนี้

UPDATE

คำสองสามคำเกี่ยวกับการเลือก Clojure บน JVM เป็นตัวเลือกภาษา แรงจูงใจหลักสำหรับเรื่องนี้คือ:

  • การเกิดขึ้นพร้อมกัน - Clojure มีเรื่องราวการเกิดขึ้นพร้อมกันที่ไม่ซ้ำใครทำงานได้ดีในการดูวิดีโอนี้ที่อธิบายถึงแนวคิดหลักบางส่วน มันสามารถปรับขนาดได้อย่างน่าเชื่อถือให้กับสถาปัตยกรรมอย่างหนาแน่นแบบ multi-core โดยใช้ซอฟแวร์การทำธุรกรรมหน่วยความจำ และมันก็สามารถทำสิ่งนี้ได้โดยไม่มีค่าใช้จ่าย (ไม่ล็อค) ซึ่งเป็นความสามารถทางวิศวกรรมที่น่าทึ่ง
  • ฟังก์ชั่นการเขียนโปรแกรม - Clojure เป็นภาษาการทำงานที่เน้นฟังก์ชั่นที่ไม่สามารถเปลี่ยนแปลงได้และลำดับที่สูงขึ้น มันไม่ได้ทำงานอย่างหมดจดเหมือน Haskell แต่เป็นภาษา FP ที่สำคัญที่สุด บางคนบอกว่านี่ช่วยให้คุณเขียนโปรแกรมได้ดีขึ้น
  • ประสิทธิภาพการทำงานของโปรแกรมเมอร์ - Clojure ได้รับผลประโยชน์การผลิตทั้งหมดของปรัชญา Lisp code-is-data ในทางปฏิบัติสิ่งนี้หมายถึงความสามารถของแมโครที่ทรงพลังอย่างเหลือเชื่อและไวยากรณ์ที่เรียบง่าย แต่มีความยืดหยุ่นสูงที่คุณสามารถใช้เพื่อกำหนด DSL ของคุณเองสำหรับปัญหาใด ๆ ที่คุณกำลังเผชิญอยู่
  • ต้องการภาษาแบบไดนามิกที่เหมาะสมสำหรับการพัฒนาอย่างรวดเร็วและการเขียนสคริปต์ - Clojure สามารถใช้ในวงจรการทดสอบสร้างปรับใช้ แต่จริง ๆ แล้วเป็นเรื่องธรรมดากว่าที่จะใช้ REPL ในการพัฒนาแบบโต้ตอบและปรับเปลี่ยนสภาพแวดล้อมของรหัสที่ทำงานอยู่ ตัวอย่างเช่นฉันใช้Incanterเพื่อที่จะสามารถพล็อตกราฟและเห็นภาพข้อมูลได้ทันทีขณะที่ฉันพัฒนาเพื่อดูผลลัพธ์ของการทำงานเป็นกลุ่ม
  • การทำงานร่วมกันของ Java - การทำงานร่วมกันของ Java ของ Clojure มีประสิทธิภาพมาก วัตถุ Clojure เป็นวัตถุ Java และในทางกลับกันดังนั้นจึงเป็นเรื่องเล็กน้อยที่จะเรียก Java APIs และไลบรารีเมื่อใดก็ตามที่คุณต้องการ สิ่งนี้ให้ประโยชน์ทั้งหมดของระบบนิเวศ Java ทั้งหมดของไลบรารีและเครื่องมือ
  • ชุมชนที่ดี - ชุมชนของ Clojure มีขนาดเล็ก แต่มีชีวิตชีวาเป็นมิตรและเติบโตอย่างรวดเร็ว โครงการโอเพนซอร์สที่ยอดเยี่ยมมีอยู่มากมายเช่นIncanter (การคำนวณเชิงสถิติ) หรือRing / Compojure (เว็บเซิร์ฟเวอร์เฟรมเวิร์ก) หรือทวนเข็มนาฬิกา (ปลั๊กอิน Eclipse IDE)

Mikera นี่คือสิ่งที่ฉันถาม บริษัท ของคุณกำลังปล่อยให้ Java เป็นภาษาหลักสำหรับการพัฒนาแอปพลิเคชันและใช้ Clojure แทน ฉันเห็นด้วยกับคุณว่า JVM จะไม่หายไปโดยเฉพาะกับบาง บริษัท ที่ลงทุนในภาษาอื่นที่ทำงานบน JVM คุณช่วยเล่าเพิ่มเติมเกี่ยวกับสิ่งที่อยู่เบื้องหลังการตัดสินใจใช้ clojure เป็นภาษาพัฒนาหลักได้หรือไม่?
Augusto

แน่นอนว่าฉันได้เพิ่มความเห็นเกี่ยวกับสาเหตุที่ Clojure โดยเฉพาะ (ฉันยังพิจารณาสกาล่าซึ่งก็มีแนวโน้มมาก แต่ Clojure ได้รับรางวัลโดยขอบแคบเพราะ Lisp - เนสส์)
mikera

ขอบคุณสำหรับคำอธิบายว่าทำไม บริษัท ของคุณจึงตัดสินใจใช้ Clojure!
Augusto

7

ทุกอย่างขึ้นอยู่กับลูกค้า

Java มักจะมีช่องเล็ก ๆ ของตัวเองที่ผู้คนมักจะสนใจมันด้วยเหตุผลใดเหตุผลหนึ่งด้วยเหตุผลเดียวกับที่ผู้คนมักจะหันไปหา. php หรือ. net แต่ท้ายที่สุดมันขึ้นอยู่กับความต้องการและความชอบของลูกค้า

หากลูกค้าแจ้งว่า ... ฉันต้องการให้แอปพลิเคชันนี้เป็นจาวา ... เราจะบอกว่าไม่? อาจจะไม่ใช่ ... ถ้าพวกเขาบอกว่าเราไม่สนใจจริงๆ .... เราจะเขียนมันด้วยจาวาไหม? อาจไม่ได้ แต่นั่นเป็นเพียงการเก็งกำไร

เรามีแอปพลิเคชันที่เขียนด้วยภาษาจาวาที่มีประวัติอันยาวนาน แต่ปรากฏว่าลูกค้ากำลังเปลี่ยนทุกอย่างอย่างพิถีพิถันด้วยตราสินค้า windows .... oracle เป็น sql server ... unix / linux กับ server 2008 ... และ php และ java กับ. net

หากเกิดขึ้นแล้วใช่ ... เว้นแต่จะมีลูกค้าใหม่เข้ามาและบอกว่าเฮ้ ... เราต้องการเขียนเป็นภาษาจาวา ... เราจะใช้. net


ผู้ค้าปลีกรถยนต์รายใหญ่ของสหรัฐอเมริกากำลังทำสิ่งที่คล้ายกันเริ่มสร้างโครงการกรีนฟิลด์ส่วนใหญ่ในทับทิมแทนที่จะเป็นจาวา
Augusto

1

ข้อแรกฉันไม่ได้ทำงานกับ บริษัท ซอฟต์แวร์

ตกลงเราใช้ Oracle เป็นฐานข้อมูลหลักของเรากับข้อมูลสำคัญทั้งหมดที่เก็บไว้ในนั้น ด้วยเหตุนี้เราวางแผนที่จะใช้ Java สำหรับสิ่งที่จะทำกับ Oracle การได้มาซึ่ง Sun ของออราเคิลเป็นสิ่งกระตุ้นให้เราใช้ Java สำหรับสิ่งที่เกี่ยวข้องกับออราเคิลต่อไป

แต่แอปพลิเคชั่นเดสก์ท็อปใด ๆ ที่เขียนด้วย C # เนื่องจากทุกอย่างใช้ Windows


0

บริษัท ของคุณคิดที่จะเปลี่ยนจากจาวาเป็นเทคโนโลยีอื่นหรือไม่?

เพื่อตอบคำถามคุณ เลขที่

ดังที่นักพัฒนา Java ทุกคนรู้ ...

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

... อนาคตของจาวาค่อนข้างชัดเจนโดยเฉพาะอย่างยิ่งเนื่องจาก Oracle ต้องการสร้างรายได้ JVM

ในทางตรงกันข้ามฉันคิดว่าอนาคตมีความชัดเจน วิวัฒนาการของ Java จะดำเนินต่อไปอย่างช้า ๆ แต่มั่นคงและเทคโนโลยีหลักของ SE และ EE จะยังคงฟรี สำหรับฉันความไม่แน่นอนที่แท้จริงเพียงอย่างเดียวคือสิ่งที่จะเกิดขึ้นกับ Oracle vs Google bunfight แต่ไม่ทางใดก็ทางหนึ่งฉันคาดหวังว่า Android / Davlik จะประสบความสำเร็จเป็นทางเลือกสำหรับ Java ME ... แต่สำหรับแพลตฟอร์มมือถือเท่านั้น

Java ในฐานะที่เป็นภาษาก็ยังคงค้างอยู่ในช่วงไม่กี่ปีที่ผ่านมาการไม่รวมการปิดเป็นตัวอย่างหนึ่ง (ซึ่งอาจรวมอยู่ใน java 1.8)

สิ่งนี้อาจสร้างความรำคาญให้กับนักพัฒนา แต่ "ความมั่นคง" เป็นผลมาจากการที่ Sun / Oracle ให้ความสนใจกับสิ่งที่ธุรกิจต้องการ ... ภาษา / แพลตฟอร์มที่มีความมั่นคงในระยะยาว

ในเวลาเดียวกันมีการใช้เทคโนโลยีใหม่บางอย่างเช่น Ruby, Scala และ Groovy เพื่อส่งมอบเว็บไซต์ที่ซับซ้อน

อีกครั้งจากมุมมองของการจัดการคณะลูกขุนจะออกว่าเทคโนโลยีเหล่านี้จะดีขึ้นทั่วกระดาน

  • ผลผลิตที่เพิ่มขึ้นนั้นสามารถพิสูจน์ได้ในระยะยาวหรือไม่?
  • มีประสิทธิภาพหรือยัง scalability? เครื่องมือและห้องสมุดบุคคลที่สาม?
  • พวกเขาสามารถรับสมัครพนักงานที่มีประสบการณ์?

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


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