อีกแง่มุม:
Java เป็นภาษาคงที่ที่มีคุณสมบัติค่อนข้างเข้มงวด ซึ่งหมายความว่ามีหลายสิ่งที่ค่อนข้างเปิดกว้างหรือมีพลวัตในภาษาอื่น (c / f Ruby, Lisp เป็นต้น) ได้รับการพิจารณาอย่างเคร่งครัด
นี่คือการตัดสินใจออกแบบทั่วไป "ทำไม" ยากที่จะตอบ (ดีเพราะนักออกแบบของภาษาคิดว่ามันจะดี!) "มีอะไรสำหรับ" สวยใส: จะช่วยให้คอมไพเลอร์ตรวจสอบจำนวนมากของข้อผิดพลาดซึ่งโดยทั่วไปเป็นคุณลักษณะที่ดีงามสำหรับภาษาใด ๆ ประการที่สองมันทำให้เปรียบเทียบได้ง่ายกับเหตุผลเกี่ยวกับภาษา ตัวอย่างเช่นมันค่อนข้างง่ายที่จะสร้างความถูกต้องอย่างเป็นทางการพิสูจน์ใน (ส่วนย่อยของ) ภาษา Java; เป็นการเปรียบเทียบซึ่งจะเป็นไปไม่ได้จริงในภาษาไดนามิกเช่น Ruby et al
ความคิดนี้แทรกซึมในภาษาตัวอย่างเช่นการประกาศบังคับใช้ข้อยกเว้นที่เป็นไปได้ที่วิธีการหนึ่งอาจใช้วิธีการแยกประเภทของinterface
vs. เทียบกับclass
เพื่อหลีกเลี่ยงการถ่ายทอดทางพันธุกรรมที่คลุมเครือและอื่น ๆ สำหรับสิ่งที่มันเป็น (ภาษา OOP โลกแห่งความจำเป็นคงที่ที่มีความสำคัญและมุ่งเน้นไปที่การจัดการข้อผิดพลาดในการคอมไพล์เวลา) สิ่งเหล่านั้นจริง ๆ แล้วค่อนข้างหรูหราและทรงพลัง พวกเขาเข้ามาใกล้กับภาษาเชิงวิทยาศาสตร์ (Science'y) ซึ่งทำขึ้นโดยมีจุดประสงค์เพื่อสำรวจปัญหาเหล่านี้มากกว่าภาษาอื่น ๆ ในโลกแห่งความจริงก่อนหน้านี้ (ในเวลานั้นคุณต้องคำนึงถึง)
ดังนั้น. มีvoid
ประเภทที่เข้มงวดเป็นข้อความที่ชัดเจน: วิธีนี้จะไม่ส่งกลับสิ่งใดระยะเวลา มันเป็นสิ่งที่มันเป็น. การแทนที่โดยการบังคับให้ส่งคืนสิ่งที่มักจะนำไปสู่พฤติกรรมแบบไดนามิกมากขึ้น (เช่นใน Ruby ที่def ทุกคนมีค่าตอบแทนที่ชัดเจนหรือโดยปริยายเสมอ) ซึ่งจะไม่ดีสำหรับการพิสูจน์และเหตุผล; หรือการขยายขนาดใหญ่โดยใช้กลไกอื่น ๆ ที่นี่
(และ NB, ทับทิม (ตัวอย่าง) จัดการนี้แตกต่างกันและวิธีการแก้ปัญหาของมันยังคงตรงตามที่ได้รับการยอมรับว่าเป็นของ Java เพราะมีปรัชญาที่แตกต่างอย่างสิ้นเชิง. ตัวอย่างเช่นมันจะพ่น provability และสมเหตุสมผลสมบูรณ์ออกจากหน้าต่างในขณะที่การวางขนาดใหญ่มุ่งเน้นไปที่ ความสามารถในการใช้ภาษาสูงมาก)