我很感激這個問題可能會因爲它的開放性質而關閉,但我很好奇。靜態類型的跨OS Web平臺:Java,Mono和其他?
如果我想用靜態類型語言開發一個跨平臺的Web應用程序,我的選擇是什麼?我知道Mono和Java,但還有什麼?
(我說的跨平臺的,我的意思是Windows和Linux的至少一個公共味)
我很感激這個問題可能會因爲它的開放性質而關閉,但我很好奇。靜態類型的跨OS Web平臺:Java,Mono和其他?
如果我想用靜態類型語言開發一個跨平臺的Web應用程序,我的選擇是什麼?我知道Mono和Java,但還有什麼?
(我說的跨平臺的,我的意思是Windows和Linux的至少一個公共味)
我相信Ruby是stongly類型,因此Ruby on Rails是一個很好的選擇。
你確定Ruby是強類型的嗎?維基百科似乎認爲,否則... –
是的,但紅寶石不是**靜態類型**。強類型意味着編程系統拒絕類型不匹配的表達式/操作。但是這可能會在運行時強制執行,比如在Ruby中。 –
啊,當然,謝謝你打掃衛生。我會更新這個問題! –
您可以使用單一語言的客戶端和服務器部分:
PHP和Python不是靜態類型語言。所以他們的框架不會阻止運行時的類型錯誤破壞服務器。 –
您正在混合框架和語言。 GWT是一個使用Java的框架。這可能會誤導恕我直言。 –
@MikeMyers哦,明確地列出了所有這些,但我只是認爲OP在想要語言方面非常明顯,而不是使用相同語言的框架列表。這個問題突出了Web開發人員有限的靜態類型語言選項。看到靜態類型的nodejs版本會很酷。 –
除了Java和C#(通過單聲道),你也可以使用(現代)C++中的
Wt (C++ Web Toolkit)形式。 現在C++的C向後兼容性部分不是強類型的,否則C++程序是類型安全的。
如果你想要非常強的類型安全性,你可以使用Haskell和Yesod。 Yesod的目標是使用強類型來防止編程Web應用程序中的常見錯誤。例如,URL被類型檢查。如果不提供正確的參數,則無法構建應用程序內鏈接。在渲染網頁時轉義用戶內容是Haskell編譯器用於確保字符串在被包含在渲染頁面之前正確轉義的另一種情況。
這些對我來說是全新的,感謝您的信息!然而,我對'零運行時間失敗'的評論持懷疑態度,請你詳細說明一下嗎?靜態類型不會消除行爲錯誤... –
我應該澄清:*目標*是在類型系統中編碼儘可能多的屬性,以儘可能接近運行時失敗的可能性。這並不意味着你有一個正式驗證的網絡應用程序,但它是一個步驟。 –
太棒了,我目前正在.NET中通過代碼合同使用形式驗證。這些聽起來像我的有點語言:) –