Для нашего проекта eLearning в нашем университете мы используем Java-апплеты для отображения некоторых интерактивных материалов (например, некоторых интерактивных графиков функций или простой системы вопросов/ответов или других интерактивных элементов и любой комбинации на них) внутри учебных модулей Ilias.
Мы решили использовать Java, потому что нам нужно открытое решение (и HTML5 в то время не был действительно доступен, и Flash был и не является действительно вариантом).
Теперь, спустя несколько лет, у меня действительно появилось ощущение, что Java не подходит для Интернета. В основном из-за множества проблем, которые я действительно не смог исправить для всех случаев.
Итак, мой вопрос: Является ли Java просто неправильной для сети, или я делаю это. неправильно? Можете ли вы указать, как я могу решить эти проблемы?
Проблемы, с которыми я столкнулся за это время:
-
Апплет Java требует времени для загрузки. Даже если это очень простой маленький апплет, иногда требуется около минуты для загрузки. Почему это? Действительно ли Java-инфраструктура намного больше, чем Qt или другие структуры? Или VM настолько велика? Или VM настолько медленная?
-
Браузер (или, по крайней мере, вкладка в Chrome) получает очень медленный esp при загрузке апплета, но также и потом.
-
Апплет Java выглядит по-разному в каждой системе. Элементы управления пользовательского интерфейса совершенно разные, а также ведут себя немного иначе. Иногда это внешний вид (или его вид), иногда это совершенно что-то собственное. Кроме того, шрифт в основном отличается и часто поддерживает другой подмножество символов Unicode. Это реальная проблема для нас, потому что мы много раз используем Unicode для математических символов, и у нас появилось много сообщений о том, что некоторые символы не работают для некоторых людей. Также, как шрифт имеет разный размер для каждой системы, я получил сообщения о том, что текст вырезается для нескольких человек (или сокращен "..." в JLabel). Теперь я столкнулся с этой проблемой, включив TTF в JAR. Это работает в основном. Тем не менее иногда я получаю эти "..." отчеты даже с уникальным шрифтом.
-
Иногда использование памяти невероятно высоко (но не всегда).
-
При загрузке страницы с несколькими апплетами шансы становятся очень высокими, что браузер прорывается и несколько апплетов загружаются неправильно. Также вся операционная система работает очень медленно.
-
Иногда апплет Java не загружается в браузере X, а в браузере Y. После нескольких щелчков при перезагрузке или перезапуске браузера/системы это поведение может переключаться. Например, кажется, что шансы выше, что загрузка апплета в Firefox (также не всегда, но в основном, по крайней мере, после нажатия один или два раза при перезагрузке) и менее вероятна в Chrome (но если мне повезет, она также работает иногда), В зависимости от системы, это могут быть разные браузеры, которые работают лучше всего. Хотя браузер никогда не работает идеально. Такое поведение наблюдается во всех тестируемых нами системах (разные дистрибутивы Linux, как 32-битные, так и 64-битные, Windows XP/Vista/7, MacOSX).
-
Иногда апплет остается пустым, когда я переключаюсь на другую вкладку и возвращаюсь обратно. Иногда это, по крайней мере, занимает очень много времени, пока не появится снова.
-
Он потребляет весь процессор. Даже после того, как я закрыл все вкладки с помощью апплетов. Мне нужно выйти из браузера, чтобы решить эту проблему.
Некоторые примеры, где мы имеем эти проблемы:
- http://www.matha.rwth-aachen.de/~ilias/jars/Integration/Integration_Geogebra.html
- http://www.matha.rwth-aachen.de/~ilias/jars/Abbildungen/Abbildungen.html
- http://www.matha.rwth-aachen.de/~ilias/jars/Trigonometrie/Trigonometrie_Geonext.html
- http://www.matha.rwth-aachen.de/~ilias/jars/AnalytischeGeometrieundLA/AnalytischeGeometrieundLA.html
- http://www.matha.rwth-aachen.de/~ilias/jars/ganze%20und%20natuerliche%20Zahlen/ganze%20und%20natuerliche%20Zahlen.html
Если вы посмотрите на эти примеры, что будет хорошим альтернативным решением для Java? Я думал о HTML + JS с недавними браузерами (это не проблема, если мы говорим нашим пользователям, что они должны использовать браузеры на основе WebKit или около того), хотя я думаю, что некоторые из этих примеров могут быть очень трудными для реализации (или, по крайней мере, сложнее, чем на Java).