2012-05-17 53 views
7

我很感激這個問題可能會因爲它的開放性質而關閉,但我很好奇。靜態類型的跨OS Web平臺:Java,Mono和其他?

如果我想用靜態類型語言開發一個跨平臺的Web應用程序,我的選擇是什麼?我知道Mono和Java,但還有什麼?

(我說的跨平臺的,我的意思是Windows和Linux的至少一個公共味)

回答

3

有強調強靜正確性幾個高性能哈斯克爾Web框架:

的目標是瘦型系統上提供高度優化的代碼,以及運行時失敗的可能性爲零。

引述耶索德網站:

打開運行時錯誤成編譯時錯誤

耶索德認爲在 理念使編譯器你的盟友,而不是你的敵人。我們使用 類型系統儘可能強制執行,從生成正確的 鏈接,以避免XSS攻擊,來處理字符編碼 問題。一般來說,如果你的代碼編譯,它的工作原理。而不是 在任何地方聲明類型,你可以讓編譯器通過類型推斷找出 。

+0

這些對我來說是全新的,感謝您的信息!然而,我對'零運行時間失敗'的評論持懷疑態度,請你詳細說明一下嗎?靜態類型不會消除行爲錯誤... –

+1

我應該澄清:*目標*是在類型系統中編碼儘可能多的屬性,以儘可能接近運行時失敗的可能性。這並不意味着你有一個正式驗證的網絡應用程序,但它是一個步驟。 –

+0

太棒了,我目前正在.NET中通過代碼合同使用形式驗證。這些聽起來像我的有點語言:) –

1

我相信Ruby是stongly類型,因此Ruby on Rails是一個很好的選擇。

+0

你確定Ruby是強類型的嗎?維基百科似乎認爲,否則... –

+4

是的,但紅寶石不是**靜態類型**。強類型意味着編程系統拒絕類型不匹配的表達式/操作。但是這可能會在運行時強制執行,比如在Ruby中。 –

+0

啊,當然,謝謝你打掃衛生。我會更新這個問題! –

4

您可以使用單一語言的客戶端和服務器部分:

  1. 的Java
  2. C#
  3. 谷歌的圍棋
  4. 斯卡拉
  5. GWT(Java框架)
  6. 哈斯克爾網框架
+0

PHP和Python不是靜態類型語言。所以他們的框架不會阻止運行時的類型錯誤破壞服務器。 –

+0

您正在混合框架和語言。 GWT是一個使用Java的框架。這可能會誤導恕我直言。 –

+0

@MikeMyers哦,明確地列出了所有這些,但我只是認爲OP在想要語言方面非常明顯,而不是使用相同語言的框架列表。這個問題突出了Web開發人員有限的靜態類型語言選項。看到靜態類型的nodejs版本會很酷。 –

2

如果你的意思是靜態類型,不幸的是沒有太多的選擇。谷歌的Go語言似乎開始進入Web應用程序領域(Go支持谷歌的App Engine和諸如GoWeb等項目),但這些努力可能還不是很成熟。

Scala可能是另一種可能的選擇。雖然它也運行在JVM上,但由於語言的高級功能(見Lift),它的Web框架有很大的不同,可能值得單獨看看。

2

除了Java和C#(通過單聲道),你也可以使用(現代)C++中的
Wt (C++ Web Toolkit)形式。 現在C++的C向後兼容性部分不是強類型的,否則C++程序是類型安全的。

如果你想要非常強的類型安全性,你可以使用Haskell和Yesod。 Yesod的目標是使用強類型來防止編程Web應用程序中的常見錯誤。例如,URL被類型檢查。如果不提供正確的參數,則無法構建應用程序內鏈接。在渲染網頁時轉義用戶內容是Haskell編譯器用於確保字符串在被包含在渲染頁面之前正確轉義的另一種情況。