ฉันตั้งโปรแกรม Java web apps เป็นเวลา 10 ปีก่อนที่จะเปลี่ยนเป็น python เมื่อ 4 ปีที่แล้ว ฉันรู้สึกว่าฉันทำงานได้อย่างมีประสิทธิภาพมากขึ้นโดยใช้งูใหญ่และสามารถทำงานได้มากขึ้นในระยะเวลาอันสั้นและเพื่อความซื่อสัตย์ฉันมีความสุขมากเมื่อฉันพัฒนาในงูหลาม นี่คือสาเหตุบางประการที่ทำให้ฉันคิดว่าหลามดีกว่าแล้ว Java จากประสบการณ์ส่วนตัวของฉัน
กรอบงานเว็บ:
เมื่อฉันเริ่มเขียนโปรแกรมเว็บแอพใน Java ครั้งแรก Struts เพิ่งออกมาและมันก็ไม่ได้ยอดเยี่ยม แต่มันเป็นสิ่งที่ดีที่สุดที่มีอยู่ ฉันสร้างแอพพลิเคชั่นมากมายและอีกสองสามเฟรมในระหว่างทาง เมื่อใดก็ตามที่เฟรมเวิร์กใหม่ออกมา (Tapestry, Wicket, GWT, Stripe, grails, AppFuse, Play, RichFaces, Spring ฯลฯ ) ฉันจะลองดูและดูว่ามันดีขึ้นหรือไม่และส่วนใหญ่แล้วมันจะดีขึ้นเล็กน้อย และบางครั้งก็ไม่ดีขึ้นเลย ฉันต้องบอกว่ากรอบการเล่นเป็นขั้นตอนในทิศทางที่ถูกต้อง
ไม่รวมแบตเตอรี่:
หนึ่งในส่วนที่น่ารำคาญที่สุดของ Java คือความจริงที่ว่าไลบรารีส่วนใหญ่ที่คุณใช้ไม่ได้รวมอยู่ในจาวาเองคุณต้องรวม libs ของบุคคลที่สามจำนวนหนึ่งจากสถานที่เช่น apache ทั่วไป หากคุณใช้บางสิ่งบางอย่างเช่นจำศีลกับห้องสมุดขนาดใหญ่อื่น ๆ คุณจะลงเอยในนรกที่ Jar พึ่งพาซึ่งไฮเบอร์เนตต้องการรุ่นหนึ่งขวดและอย่างอื่นต้องการรุ่นอื่น หากคุณโหลดไฟล์ jar ในลำดับที่ผิดคุณจะโชคไม่ดี คุณต้องพึ่งพาเครื่องมือเช่น Maven และไม้เลื้อยเพื่อจัดการการพึ่งพาของคุณและสิ่งนี้จะนำมาซึ่งการพึ่งพามากขึ้นในโครงการของคุณซึ่งส่งผลให้โครงการมีขนาดใหญ่ ฉันมีไฟล์ war 100MB + ไฟล์ war สำหรับเว็บแอพที่ง่ายที่สุด
มีตัวเลือกมากเกินไป:
ด้วยเหตุผลบางอย่างดูเหมือนว่าจะมีวิธีที่แตกต่างกันมากเกินไปในการทำสิ่งเดียวกันใน Java มีอยู่มากกว่า 38 กรอบเว็บที่แตกต่างกันสำหรับ Java ตามวิกิพีเดีย (มีhttp://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) และออมที่แตกต่างกัน 23 ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java ) เพื่อตั้งชื่อตัวอย่างสองสามตัวอย่าง หากคุณดูภาษาอื่นพวกเขามีจำนวนที่เหมาะสมกว่า บางคนคิดว่าการมีตัวเลือกมากมายเป็นสิ่งที่ดี แต่มันไม่ได้นำไปสู่ความพยายามที่สูญเปล่าในชุมชนนักพัฒนาทุกคนกำลังสร้างวงล้อเดียวกันและถ้าคุณเป็นคนใหม่ในภาษาที่คุณมี ตัวเลือกมากเกินไปที่จะเลือกจาก
เซิร์ฟเวอร์แอป:
เว็บแอปพลิเคชัน Java นั้นหนักมากและต้องใช้ทรัพยากรจำนวนมากในการรัน พวกเขากำลังหน่วยความจำหิวโดยเฉพาะอย่างยิ่ง เช่นเดียวกับซอฟต์แวร์ใด ๆ ที่พวกเขาสามารถปรับเพื่อลดการใช้ทรัพยากรของพวกเขา แต่เมื่อเทียบกับภาษาอื่น ๆ พวกเขาออกจากการตั้งค่ากล่องน่ากลัว ในอดีตที่ผ่านมาฉันเคยใช้ weblogic, websphere, Jboss, Tomcat และ Jetty ฉันใช้สามข้อแรกเท่านั้นเมื่อฉันถูกบังคับให้ใช้ EJB แต่แม้ว่าคุณจะไม่ได้ใช้ EJB พวกเขาเป็นเซิร์ฟเวอร์แอปขนาดใหญ่และบางครั้งก็ยากที่จะกำหนดค่าและทำงานอย่างถูกต้อง Tomcat และ Jetty ดีกว่าและง่ายกว่าในการเซ็ตอัพ แต่ยังคงเป็น hogs ทรัพยากร
แอพโฮสต์:
หากคุณไม่ได้ใช้เซิร์ฟเวอร์ของคุณเองมันเป็นเรื่องยากที่จะหาโฮสติ้งที่ใช้ร่วมกันสำหรับแอป Java ของคุณในราคาที่เหมาะสม เหตุผลหลักคือเนื่องจากแอปพลิเคชันจาวาต้องการหน่วยความจำมากขึ้นเมื่อเทียบกับภาษาอื่น ๆ ดังนั้นจึงไม่สมเหตุสมผลที่ผู้ให้บริการโฮสติ้งที่ใช้ร่วมกันจะใช้ RAM อันมีค่าของพวกเขาในการเรียกใช้เว็บไซต์จาวา นั่นหมายความว่ามีผู้ให้บริการน้อยที่ให้บริการโฮสติ้ง Java ซึ่งในทางกลับกันหมายถึงค่าใช้จ่ายที่สูงขึ้นในการเรียกใช้เว็บไซต์ของคุณ
เวลาในการพัฒนา:
เมื่อฉันพัฒนาด้วยจาวาฉันพบว่าตัวเองช้าลงมากแล้วสิ่งที่ฉันสามารถทำได้ในหลาม ฉันจะต้องทำการเปลี่ยนแปลงรวบรวมปรับใช้ใหม่และทดสอบแล้วซึ่งจะทำให้กระบวนการวนซ้ำช้าลง ฉันรู้ว่ามีวิธีที่จะทำให้สิ่งนี้เร็วขึ้น แต่ถึงแม้จะเป็นการดีที่สุดฉันก็รู้สึกช้าลงมากแล้วสิ่งที่ฉันสามารถทำได้ในงูหลาม
นอกจากนี้ยังมีรหัสสำเร็จรูปจำนวนน้อยให้ทำสิ่งเดียวกันในไพ ธ อนดังนั้นฉันจึงใช้เวลาน้อยลงในการพัฒนาโค้ดเช่นกัน
Java รู้สึกว่าได้รับการออกแบบทางวิศวกรรมในหลาย ๆ ส่วนจำนวนมากของ API และส่วนต่อประสานเป็นวิธีที่ซับซ้อนสำหรับสิ่งที่คุณต้องการทำ และทุกคนและพี่ชายของพวกเขาคิดว่าพวกเขาเป็นสถาปนิกจาวาและส่งผลให้ระบบที่ซับซ้อนขนาดใหญ่ที่ยากต่อการใช้งานและพัฒนาด้วย
IDE:
เมื่อฉันพัฒนาใน Java ฉันรู้สึกติดกับ IDE ฉันก็หายไปโดยไม่ได้ IntelliJ เป็น IDE ที่ดีที่สุดในตลาดและมันยากที่จะเปลี่ยนเป็นงูใหญ่เพราะไม่มีอะไรที่เหมือนกับงูหลาม ดังนั้นแทนที่จะเป็น IDE ฉันแค่ใช้ textmate ซึ่งเป็นเพียงเครื่องมือแก้ไขข้อความธรรมดา ตอนแรกมันยาก แต่เนื่องจากมันเป็นเพียงโปรแกรมแก้ไขข้อความมันเป็นแอปพลิเคชันที่รวดเร็วและตอบสนองได้ดีมาก ฉันสามารถเปิดโครงการทั้งหมดได้ในไม่กี่วินาทีในขณะที่เมื่อฉันต้องการเปิดโครงการใน IDE อาจใช้เวลาหนึ่งนาทีหรือมากกว่านั้นด้วยเครื่องที่มี RAM จำนวนมาก ผู้ผลิต IntelliJ ออกมาพร้อมกับตัวแก้ไขหลามชื่อ pycharm ฉันซื้อมันเมื่อออกมาครั้งแรกและมันยอดเยี่ยมมาก แต่สิ่งที่ฉันรู้คือฉันไม่ต้องการ IDE สำหรับไพ ธ อนฉันสบายดีด้วยโปรแกรมแก้ไขข้อความ เมื่อฉันกลับไปทำงานบน Java web apps ที่ฉันต้องทำเป็นครั้งคราวฉันพยายามใช้โปรแกรมแก้ไขข้อความ แต่ฉันก็ยังไม่เข้าใจในเรื่องนี้ ฉันต้องการ IDE สำหรับ Java มากขึ้นเพราะถ้าฉันทำบางสิ่งบางอย่างมันใช้เวลาในการคอมไพล์ใหม่และปรับใช้ใหม่ซึ่งทำให้ฉันช้าลง
ออม:
เมื่อฉันเริ่มใช้ Hibernate เป็น ORM ครั้งแรกฉันคิดว่ามันยอดเยี่ยมมีปัญหาและมันก็ไม่สมบูรณ์แบบ แต่ก็ดีขึ้นกว่าที่ฉันเคยทำมาก่อน ฉันมีความสุขกับมันจนกระทั่งฉันสมัครใช้งาน ORM ของ Django ในโครงการหลามและนั่นทำให้ฉันลืมตาขึ้นมานั่นคือวิธีที่ ORM ควรทำงาน หลังจากนั้นฉันก็กลับไปที่โหมดไฮเบอร์เนตและฉันก็รู้สึกผิดหวังและอยากกลับไปที่ ORM ของ Django หลาม ORM ที่ยอดเยี่ยมอีกอย่างหนึ่งคือ sqlalchemy ซึ่งคล้ายกับ ORM ของ Django แต่แตกต่างกันเล็กน้อย ฉันมีประสบการณ์ จำกัด กับ ORM ของ ROR แต่จากสิ่งที่ฉันจำได้มันก็ค่อนข้างดีเช่นกัน
แม่แบบ:
ระบบสร้างเทมเพลตบนเว็บใน Java นั้นไม่ค่อยดีนักและฉันคิดว่าฉันได้ลองทุกอย่างแล้ว (ไทล์ freemarker ความเร็ว ฯลฯ ) ส่วนใหญ่มีเพียงฟังก์ชั่นพื้นฐานเท่านั้นและเป็นความเจ็บปวดในการทำงาน ด้าน Python รายการโปรดสองรายการของฉันคือ Django templates และ Jinja2 พวกเขามีทุกอย่างที่ฉันต้องการในเครื่องมือสร้างแรงบิดและใช้งานง่ายมาก