ฉันลำเอียง (เป็นผู้เชี่ยวชาญ Python แต่ค่อนข้างเป็นสนิมใน Java) แต่ฉันคิดว่า Python runtime ของ GAE นั้นก้าวหน้ากว่าและพัฒนาได้ดีกว่า Java runtime - ในอดีตนั้นใช้เวลาหนึ่งปีในการพัฒนาและพัฒนา .
แน่นอนว่าสิ่งต่าง ๆ ที่จะดำเนินต่อไปนั้นเป็นเรื่องยากที่จะคาดการณ์ - ความต้องการมีแนวโน้มแข็งแกร่งขึ้นในฝั่ง Java (โดยเฉพาะอย่างยิ่งเนื่องจากไม่ใช่แค่เกี่ยวกับ Java แต่ภาษาอื่น ๆ ตั้งอยู่บน JVM ด้วยเช่นกัน) หรือรหัส Ruby บน App Engine); ทีมงาน Python App Engine มีข้อได้เปรียบในการร่วมงานกับ Guido van Rossum ผู้ประดิษฐ์ Python และวิศวกรที่แข็งแกร่งอย่างน่าอัศจรรย์
ในแง่ของความยืดหยุ่นเอ็นจิ้น Java ดังที่กล่าวมาแล้วมีความเป็นไปได้ในการรัน JVM bytecode ที่ทำจากภาษาต่าง ๆ ไม่ใช่แค่ Java - หากคุณอยู่ในร้านค้าหลายภาษา ในทางกลับกันหากคุณเกลียดชัง Javascript แต่ต้องรันโค้ดบางอย่างในเบราว์เซอร์ของผู้ใช้ GWT ของ Java (การสร้างจาวาสคริปต์สำหรับคุณจากการเข้ารหัสระดับ Java ของคุณ) นั้นยอดเยี่ยมกว่าและสูงกว่าทางเลือกด้าน Python (ในทางปฏิบัติหากคุณเลือก Python คุณจะเขียน JS ด้วยตัวเองเพื่อจุดประสงค์นี้ในขณะที่ถ้าคุณเลือก Java GWT เป็นทางเลือกที่ใช้งานได้หากคุณเกลียดการเขียน JS)
ในแง่ของห้องสมุดมันค่อนข้างจะล้าง - JVM ถูก จำกัด เพียงพอ (ไม่มีเธรด, ไม่มีตัวตักคลาสที่กำหนดเอง, ไม่มี JNI, ไม่มีฐานข้อมูลเชิงสัมพันธ์) เพื่อขัดขวางการนำไลบรารี Java ที่มีอยู่กลับมาใช้ใหม่ได้ง่ายกว่า Python ที่มีอยู่ ไลบรารีถูกขัดขวางโดยข้อ จำกัด ที่คล้ายกันใน Python runtime
ในแง่ของประสิทธิภาพฉันคิดว่ามันเป็นเรื่องล้างแม้ว่าคุณควรจะเกณฑ์มาตรฐานในงานของคุณเอง - ไม่ต้องพึ่งพาประสิทธิภาพของการใช้งาน JVM ที่ใช้ JVM ซึ่งได้รับการปรับให้เหมาะสมที่สุดซึ่งจะช่วยลดเวลาในการเริ่มต้นและรอยเท้าหน่วยความจำขนาดใหญ่ สภาพแวดล้อมนั้นแตกต่างกันมาก (ค่าใช้จ่ายในการเริ่มต้นจะจ่ายบ่อยครั้งเมื่ออินสแตนซ์ของแอปของคุณเริ่มต้นหยุดย้ายไปยังโฮสต์ที่แตกต่างกัน ฯลฯ ทั้งหมดล้วนให้คุณ - เหตุการณ์ดังกล่าวมักจะถูกกว่าด้วยสภาพแวดล้อมรันไทม์ Python มากกว่า JVMs)
สถานการณ์ XPath / XSLT (เป็นถ้อยคำที่ไพเราะ ... ) ไม่สมบูรณ์แบบทั้งสองข้างถอนหายใจแม้ว่าฉันคิดว่ามันอาจจะแย่น้อยกว่าใน JVM (ที่เห็นได้ชัดว่าเซตย่อยที่สำคัญของแซกซอนสามารถวิ่งได้ ด้วยความระมัดระวัง) ฉันคิดว่ามันเป็นปัญหาการเปิดในประเด็น Appengineมี XPath และ XSLT ในชื่อของพวกเขา - ตอนนี้มีปัญหาเฉพาะการขอห้องสมุดเฉพาะและนั่นก็คือสายตาสั้น: ฉันไม่สนใจจริง ๆ ว่า XPath / XSLT ดีอย่างไร สำหรับ Python และ / หรือสำหรับ Java ตราบใดที่ฉันใช้งาน (ไลบรารีเฉพาะอาจทำให้การโยกย้ายของรหัสที่มีอยู่ง่ายขึ้น แต่สิ่งสำคัญน้อยกว่าความสามารถในการทำงานเช่น "ใช้การแปลง XSLT อย่างรวดเร็ว" ในบางวิธี! -) ฉันรู้ว่าฉันให้ความสำคัญกับปัญหาดังกล่าวหากใช้ถ้อยคำเป็นอย่างดี
สุดท้าย แต่ไม่ท้ายสุดโปรดจำไว้ว่าคุณสามารถมีแอปเวอร์ชันต่าง ๆ (ใช้ที่เก็บข้อมูลเดียวกัน) บางแอพพลิเคชั่นที่ใช้กับ Python runtime บางตัวใช้ Java Runtime และคุณสามารถเข้าถึงเวอร์ชันที่แตกต่างจาก "default / active "หนึ่งรายการที่มี URL ที่ชัดเจน ดังนั้นคุณอาจมีทั้งรหัสPython และ Java (ในเวอร์ชันที่แตกต่างกันของแอป) ใช้และแก้ไขแหล่งข้อมูลเดียวกันทำให้คุณมีความยืดหยุ่นมากขึ้น (แม้ว่าจะมีเพียง URL เดียวที่จะมี URL ที่ "ดี" เช่น foobar.appspot.com - ซึ่งอาจเป็นสิ่งสำคัญสำหรับการเข้าถึงโดยผู้ใช้แบบโต้ตอบบนเบราว์เซอร์ฉันจินตนาการ ;-)