Производительность - даже
Обе платформы работают очень хорошо практически для всех приложений.
Не очень много, чтобы выделить их, хотя мой субъективный опыт заключается в том, что Java имеет небольшое преимущество для долго работающих приложений, тогда как .Net быстрее для запуска приложений.
Доступные инструменты (даже сторонние инструменты) - Дискуссионный
Зависит от того, какие инструменты вам нужны и с чем вы знакомы.
.Net, безусловно, имеет несколько отличных инструментов, предоставляемых Microsoft. С другой стороны, в мире Java есть такие же хорошие инструменты, например, в Eclipse, средах Netbeans IntelliJ.
Кроссплатформенная совместимость - победа Java
.Net в основном привязан к платформам Microsoft (Windows, Xbox и т. Д.). Полные реализации недоступны для любых платформ не Microsoft .
Mono хорош, но на самом деле он не дает вам полной кроссплатформенности, потому что он не поддерживает все библиотеки .Net (например, вы не можете ожидать, что все компоненты Windows GUI будут работать правильно, поэтому, если вы не переключитесь на кроссплатформенный инструментарий, такой как GTK #, вы не сможете запустить свое приложение на разных платформах)
Ява действительно переносима. Не только язык, но гораздо важнее то, что все библиотеки Java являются переносимыми. Если вы будете придерживаться чисто библиотек Java (например, Swing for GUI), тогда ваш код будет работать везде, где у вас есть среда выполнения Java.
Библиотеки (особенно сторонние библиотеки) - Java win
Вероятно, лучшая сила платформы Java - обширная экосистема библиотек, особенно библиотек с открытым исходным кодом. Несколько примеров:
- Все библиотеки и инструменты Apache
- Все библиотеки в обширной экосистеме Eclipse
- Все библиотеки предоставлены / поддерживаются Google
- JBoss и все соответствующие корпоративные инструменты, поддерживаемые Red Hat
Стоимость (Oracle, кажется, пытается монетизировать Java) - Java выиграет, если вы идете с открытым исходным кодом, в противном случае даже.
Вы можете иметь 100% открытый стек Java с открытым исходным кодом, который бесплатен и не привязывает вас к какой-либо конкретной проприетарной платформе. Это на 100% бесплатно.
Кроме того, вы можете купить IntelliJ IDEA, запустить Java в Windows и использовать собственную базу данных, и в этом случае она будет стоить столько же, сколько и обычный стек Microsoft .NET.
Процесс разработки (самый простой / быстрый) - дискуссионный
Вероятно, это больше зависит от опыта ваших разработчиков с каждой платформой, а не от конкретной характеристики платформы.
.Net, безусловно, имеет несколько отличных инструментов, которые могут сделать вас очень продуктивными для простых приложений с графическим интерфейсом в Windows. Не удивительно, так как это «сладкое пятно» для разработки .Net.
С другой стороны, я предпочитаю стек Java для разработки на стороне сервера. С помощью таких инструментов, как Maven, и всех возможностей непрерывного развертывания / интеграции вы можете создать очень эффективный процесс разработки для надежных серверных приложений.
С точки зрения языка C # имеет некоторые преимущества в производительности по сравнению с Java. Но, с другой стороны, если вы сейчас разрабатываете на платформе Java, тенденция состоит не в том, чтобы использовать саму Java, а в том, чтобы использовать один из новых языков JVM, такой как Scala, Groovy или Clojure, - если вы это сделаете, вы будете гораздо более продуктивными. чем C # или Java.