К которым неожиданностям я должен подготовиться, если я переключаю с Sun JDK к OpenJDK?

Если я переключил бы с Sun JDK к OpenJDK, к каким неожиданностям я должен подготовиться меня?

Что действительно часто идет не так, как надо и насколько трудный это может быть?

Конечно, каждое приложение может иметь свои отдельные проблемы, но я ищу классы проблем, что-то, с чем многие люди уже боролись при переключении JDKs.

36
задан Daniel Rikowski 11 February 2010 в 08:05
поделиться

5 ответов

ResolityClureUrl является членом класса System.Web.UI.Control, поэтому он доступен непосредственно как

var url = ResolveClientUrl("~/Some/Url/");

при вызове в коде вашей страницы asp.net.

Чтобы использовать его внутри класса, необходимо передать Страницу (или элемент управления на странице) в класс в его конструкторе. Даже тогда я не уверен, что вы сможете использовать его в указанном вами пути. Вероятно, вам придется сделать что-то подобное:

public class NavigationPath
{
  private string menuItems = string.Empty;

  public NavigationPath(Page page)
  {
    menuItems = "<li>" + "<a href=\"" + page.ResolveClientUrl("~/Home.aspx") + "\">home</a>" + "</li>";
  }
}

И затем на вашей странице asp.net сделать что-то вроде:

var navPath = new NavigationPage(this);
-121--237155-

Постоянное поколение содержит метаданные, описывающие классы пользователей (классы, которые не являются частью языка Java).

Приложения с большим кодом могут заполнить этот сегмент кучи, что вызовет java.lang.OutOfMemureError: PermGen . На это не влияет настройка -Xmx или объем памяти на компьютере. Чтобы задать новый начальный размер, используйте -XX: PermSize = 64 m . Чтобы задать максимальный размер, используйте -XX: MaxPermSize = 128 m

-121--1351462-

Маловероятно, что с OpenJDK что-то пойдет не так. К настоящему времени он считается совместимым на 100%. Но я думаю, что хорошо знать, какие части должны были быть переписаны и поэтому не используют тот же код, что и SunJDK.

Запись в Википедии имеет хороший обзор:

По состоянию на май 2008 года, единственная часть библиотеки класса, которая остается запатентованной и закрытым исходным кодом (4% по состоянию на май 2007 года для OpenJDK 7 и менее 1% по состоянию на май 2008 года и OpenJDK 6)

С первого майского релиза 2007 года Sun Microsystems с помощью сообщества выпустила в виде свободного и открытого программного обеспечения или заменила на свободные и открытые альтернативы почти весь обремененный код:

  • Весь код аудио движка, включая программный синтезатор, был выпущен как Open-source. Программный синтезатор с закрытым исходным кодом был заменен новым синтезатором, разработанным специально для OpenJDK, под названием Gervill,

  • Все классы криптографии, используемые в библиотеке Class, были выпущены как Open-source,

  • Код, масштабирующий и растеризующий шрифты, был заменен на FreeType

  • Нативная система управления цветом была заменена на LitTittleC. В JDK имеется подключаемый слой, так что коммерческая версия может использовать старую систему управления цветом, а OpenJDK - LittleCMS.

  • Код растризатора сглаживающей графики был заменен средством визуализации Open-sourced Pisces, которое использовалось в проекте Этот код является полностью функциональным, но по-прежнему нуждается в некоторых улучшениях производительности,

  • Плагин JavaScript был открыт (сам движок Rhino JavaScript был открыт с самого начала).

11
ответ дан 27 November 2019 в 06:18
поделиться

Как я знаю, шрифты будут выглядеть искажёнными, Sun пришлось удалить оригинальные шрифты из OpenJDK, так как они не являются "open source", а JVM будет использовать некоторые из них по умолчанию, которые не очень хороши...

3
ответ дан 27 November 2019 в 06:18
поделиться

Поскольку OpenJDK - это проект Sun, основанный на исходном коде Java, я не ожидал много проблем. Единственная область, где что-то может сломаться, - это код, который нужно было заменить (потому что он не мог быть выпущен под GPL) или изменения из-за новых функций (но они должны быть почти такими же, как в официальном JDK).

2
ответ дан 27 November 2019 в 06:18
поделиться

Некоторые пользовательские интерфейсы качания не совпадали полностью (у металла были прокладки, которых было недостаточно, чтобы заметить). Обратите внимание, что это было 8 месяцев назад.

1
ответ дан 27 November 2019 в 06:18
поделиться

Используйте сборку OpenJDK, о которой известно, что она проходит TCK, чтобы минимизировать сюрпризы.

1
ответ дан 27 November 2019 в 06:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: