2009-06-10 3 views
4

Я родом из C/C++, и теперь делаю много вещей на C#.Ограничения настольных приложений Java?

В последнее время я заинтересовался выполнением некоторых проектов на Java после игры с Android SDK.

Я знаю, что приложения Java работают в изолированной программной среде, которая может ограничить их доступ к системе.

В окружении приложений для настольных компьютеров и серверов какие ограничения ограничены?

ответ

2

Для обычных настольных и серверных приложений ограничения не связаны с концепцией песочницы (хотя вы можете использовать его для применения очень мелкомасштабных ограничений, например, для кода пользователя), но для независимого от платформы Java. В основном, специфичный для ОС материал и доступ к аппаратным средствам обычно не могут быть выполнены в чистом JAVA, если специально не адресованы библиотекой API.

Примеры: Реестр

  • Окна
  • системном трее Windows
  • Bluetooth
  • конфигурация WLAN
+1

Просто придираться, в Java 6 вы можете получить доступ к трей: Http: //java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/Но ваша основная точка стоит. – sleske

4

Обычно настольное и серверное приложение запускается с отключенной безопасностью. Однако Java и JVM по-прежнему имеют надежную систему типов, поэтому вы не можете, например, использовать типы, которые не создавались объектом, не могут получить доступ к освобожденной памяти и не могут работать с конца буферов.

9

Приложения Java очень много в песочнице, так как приложения .NET находятся в изолированной программной среде. Они работают на своих виртуальных машинах и имеют некоторые ограничения в отношении того, что они могут делать, но по большей части они имеют большой доступ к системе, включая доступ к собственному коду через определенные вызовы.

Возможно, вы думаете о Java applets, которые выполняются внутри браузера и обычно находятся в изолированной программной среде безопасности, которая предотвращает доступ к системным ресурсам, таким как локальные файлы. (Это ограничение можно обойти, специально предоставив доступ к системе определенным апплетам.)

Вот раздел на Security Restrictions для апплетов от The Java Tutorials, который включает в себя список ограничений, размещенных на апплетах.

0

Я думаю, что главное ограничение вы можете увидеть, является способностью легко использовать родную систему API, если вам нужно, например, если вам необходимо использовать user32 или kernel32 API из Java Я думаю, что это возможно , однако это непростая задача, однако на C# это довольно легко сделать.

Также, если у вас есть устаревшая dll c/C++, вы все равно можете использовать их в приложении C#, в то время как в java все еще сложно сделать, особенно в худшем случае, когда ваш собственный код api должен использовать указатели, вы можете использовать небезопасный режим в приложении C# для передачи указателей и выделения фиксированной памяти в стеке ... и т. д.

, но, как упоминалось выше, Java & C#, как правило, имеют те же ограничения, особенно если вы нацеливаетесь на независимую платформу.

Смежные вопросы