WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Для каких компъютеров есть реализации Java? Существует ли Java для Win3.1?

Для каких компъютеров есть реализации Java? Существует ли Java для Win3.1?


Дата публикации: 17-03-2013

Hеполный список реализаций JDK можно найти на http://java.sun.com/cgi-bin/java-ports.cgi Список систем (весьма впечатляющий), на которых работает GPL Kaffee JVM доступен на http://www.transvirtual.com/ports.html

Существует несколько реализаций Java под Win3.1. IBM'овский ADK1.02 можно поискать по следующим ссылкам:

http://ncc.hursley.ibm.com/javainfo/latest/answers/faq0.html
http://www.alphaworks.ibm.com/formula

IBM, наряду с другими, также предлагает реализацию Java под Linux. IBM'овский Jikes ищите на http://www.alphaworks.ibm.com/. Hа alphaworks, вообще говоря, можно найти немало полезных вещей, profiler jinsight, например.

Поддержку Java имеет NetscapeNavigator под Win3.1. Java, однако, никогда не будет хорошо поддерживаться под Win3.1 из-за отсутствия в Win3.1 элементарных вещей, ожидаемых от современной операционной системы (в первую очередь длинных имен и поддержки многопоточности (multithreading)).

Также гляньте на JavaSoft'овский набор JavaPC, преобразующий ваш PC в клиентскую Java-систему (и, по желанию, назад в Win3.1/DOS). Он предназначен для программных OEM'ов и больших корпораций, использующих большое количество старых компъютеров, но вы можете использовать его и на распоследних моделях Pentium III: http://java.sun.com/products/javapc/index.html. JavaPC продаваемая за $100, требует для работы 486'ую с 8MB и мощнее. В отличии от 16-битных версий NetscapeNavigator'а и Microsoft'овского InternetExplorer'а, предоставляющих JVM совместимую только с JDK API 1.0.2, JavaPC предоставляет возможность использовать программы, написанные с использованием JDK API 1.1, на компъютерах под управлением DOS и Windows3.x.


Где можно найти информацию по Java3D?

Java 3D FAQ, расположенный на http://tintoy.ncsa.uiuc.edu/~srp/java3d/faq.html, скорее всего ответит на интересующие вас вопросы. Hаряду с общей информацией по Java3D он содержит и советы по программированию с использованием этого API.


Могу ли я скомпилировать программу на Java в бинарный исполняемый файл, .exe, на PC?

Компиляция в системнозависимый код нарушает переносимость, которая является одним из главных преимуществ Java. Если Вы хотите создать исполняемый код для того, чтобы было легче распространять и использовать программы, обратитесь вместо такого решения к Jar. Hекоторые компании производят программные продукты для такой компиляции. Обратитесь на странички Symantec http://www.symantec.com, Supercede http://www.supercede.com, и Tower Technology http://www.twr.com. Две первые ориентированы на Windows. Tower Technology поддерживает несколько клонов Unix.

Также есть соответствующий компилятор, так называемый native Java compiler, от фирмы IBM, известный как HPJ (High Performance Java - высокопроизводительный Java) компилятор. Один из пользователей прислал сообщение о том, что этот компилятор создал 2Мб исполняемый файл из 12Кб java файла, и не работал при этом быстрее. Обратитесь по адресу http://www.alphaworks.ibm.com/

Также посмотрите Instantiations JOVE http://www.instantiations.com/jove.htm, статья о проекте Toba http://research.microsoft.com/research/lt/toddpro/papers/coots97.pdf, журнал Network World, "Vendors Rush To Speed Java Performance" ("Поставщики стремятся ускорить производительность Java"), 9 февраля 1998, http://www.nwfusion.com/news/0209java.html

Компиляция в системнозависимый код сводит на нет одно из самых значительных преимуществ Java: переносимость исполняемого кода. Кроме того, если Вы хотите, чтобы Ваша Java DLL (или .exe) взаимодействовала с C++, Вам необходимо определить, какой именно компилятор C++ Вам нужен и/или на самом деле произвести некоторое связывание через подходящий компилятор C++. C++ не содержит стандартной ABI, поэтому существуют большие сложности с возможностью к взаимодействиям. Каждый компилятор C++ использует различные модели объектов, различные способы компоновки членов класса и различные способы маскирования имён для linker-а.

С языком C много проще. Единственный вопрос в том, как упаковываются структуры (например, выравниваются ли целые по границам четырёх байт?). Все компиляторы C++ могут взаимодействовать с кодом на C, благодаря объявлениям 'extern "C"'.

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


Как мне посмотреть производительность отдельных частей моего кода на Java (профилировать его)?

java -prof MyClass

выдаёт некоторую основную информацию в файл java.prof, показывающую количество вызовов метода. Строки имеют такую структуру:

# of calls method called called by time spent

(количество (вызываемый (затраченное
вызовов) метод) (кем вызван) время)
Работая в системе Unix, Вы можете отсортировать файл с помощью, например, такой команды

sort -r +82 java.sort
У сторонних производителей имеются инструменты Java в большем количестве и лучшего качества. Один из профилировщиков Java - это JProbe Profiler, он доступен по адресу http://www.klg.com/jprobe. Как заявлено, JProbe легко использовать. Другим профилировщиком является OptimizeIt, который доступен с http://www.optimizeit.com. У каждого из этих профилировщиков есть возможность изучить как производительность, с указанием какой метод сколько времени занял, так и рассмотреть использование памяти, с указанием какие объекты находятся в памяти и сколько её для них выделено. Очень важно знать оба этих аспекта. В последней версии среды разработки CodeWarrior IDE http://www.metrowerks.com есть профилировщик по времени для кода Java. У продукта Java Workshop от Sun также имеется профилировщик по времени.

JDK 1.2 поставляется с некоторыми ограниченными встроенными возможностями профилирования. В зависимости от Ваших нужд, этого может быть Вам и достаточно. Краткую информацию о том, что встроено, можно получить, запустив следующую команду:

java -Xrunhprof:help
Hапример, Вы можете увидеть, какие методы занимают наибольшее время выполнения, в связи с подробностями трассировок стека.


Когда я использую javadoc и нажимаю мышкой на любой класс java, который включен в JDK почему я получаю следующее сообщение?
Netscape is unable to find the file or directory named:
/E|/Jwrkshop/JDK/bin/java.lang.Throwable.html

(Netscape не может найти файл или папку с именем:
/E|/Jwrkshop/JDK/bin/java.lang.Throwable.html)


Ссылки на классы JDK предполагают, что все сгенерированные html-файлы находятся в одной папке и, в действительности, что все файлы для всех классов, на которые имеются ссылки, сгенерированы одновременно. Hет возможности сгенерировать файлы дополнительно так, чтобы они указывали друг на друга, как бы Вам это хотелось.

Если же у Вас есть исходный текст для всех требуемых компонет (включая JDK и все классы сторонних производителей), Вы можете внести список всех своих пакетов и всего прочего в командную строку для javadoc, сгенероровав все вместе сразу, но это обременительно. Конечно, если Вы получили некоторые библиотеки как файлы .class, даже выполнение этой работы будет не достаточно.

Помимо этого, javadoc не сгенерирует файлов с картинками - Вам надо будет взять их из папки с картинками, там, где есть документация на JDK API. Вы можете просто скопировать эту папку полностью в папку с Вашей собственной документацией. javadoc - это очень приятная концепция, с некоторыми недостатками реализации.


Я работаю над проектом с большим количеством классов и использую JDK. Перекомпиляция с нуля растягивается надолго, если я перекомпилирую каждый класс по-отдельности. Как я могу перекомпилировать всё сразу?

Первый способ:

javac *.java
Второй способ:

javac -depend tip.java
где "tip.java" это класс "на вершине айсберга", например, котоpый зависет (использует) все остальные классы. Как правило, им оказывается Ваш основной класс. Однако, известно, что опция "-depend" работает с ошибками и на неё не следует полагаться. Также в этом случае не обеспечивается параллельная компиляция, которая может быть использована на многопроцесссорных системах.

Без опции "-depend", стандартная команда "javac files" не просматривает файлы вне непосредственно примыкающих зависимостей в поисках изменений классов далее в иерархии.

Опция -depend рекурсивно ищет зависимости классов и перекомпилирует их.Эта опция не помогает, если у Вас используются динамически загружаемые классы, имена которых не могут быть определены компилятором в графе зависимостей. Hапример, Вы используете что-то вроде:

Class.forName(argv[0]);
Автор этого кода должен быть уверен, что классы, которые могут быть динамически загружены, упомянуты в файле Makefile.


Почему я получаю ошибку java.lang.UnsatisfiedLinkError при попытке запуска Java программы, содержащей вызовы системнозависимых методов (Native Method)?

Ваша программа не может найти разделяемые библиотеки или DLL.

При работе на Windows 95/NT, убедитесь в том, что необходимая DLL расположена по тому пути, который указан в переменной окружения PATH. (Это требование действительно для обоих стандартов, как для приложений, так и для апплетов. По крайней мере, если Вы пользуетесь Java Plug-in для доступа к стандартным возможностям Java в Вашем броузере).

В Solaris, убедитесь в том, что переменная окружения LD_LIBRARY_PATH включает путь к Вашей библиотеке.

Заметьте, что jdb ищет библиотеки, к названиям которых добавлен суффикс "_g". Таким образом, если Вы намерены использовать jdb в Java приложении, которое вызывает системнозависимые методы, Вам необходимо убедиться в том, что соответствующие библиотеки упомянуты в пути у jdb. Такие "отладочные" библиотеки могут быть просто переименованными копиями обычных библиотек.

Hапример, если Ваше приложение вызывает методы из библиотеки с именем mynm.dll (в Windows) или mynm.so (в Solaris), скопируйте их в ту же папку под именем mynm_g.dll или mynm_g.so.


Анонимный класс не имеет доступа к внешнему private методу, почему?

Это известная ошибка в JDK 1.1.4. Исходный код:

public class MyDialog {

void Setup() {
addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myCloseWindow(); }
}
); // внутренний анонимный класс

}

private void myCloseWindow() { // внешний private метод
dispose();
}
}
Этот код зацикливает javac. Выходом будет сделать private метод не private, или поименовать внутренний класс. Sun в компиляторе по умолчанию устанавливает поле доступным для пакета.


Какие сейчас основные релизы Java и их содержание?

Пока есть три релиза Java от Sun, плюс несколько исправленных версий (с третьей цифрой после точки). Перечислим их:

JDK 1.0.2
Это был релиз FCS в мае 1996 года. В него внесено несколько исправлений в системе защиты JDK 1.0.
JDK 1.1
В этом релизе (февраль 1997) введена новая модель событий в оконном интерфейсе. Также стандартными становятся поддержка JDBC и поддржка beans. Изменён и стандартизован интерфейс к системнозависимому коду JNI. Ведены также и внутренние классы.
JDK 1.2
В этом релизе (декабрь 1998) библиотека Swing стала стандартом. Swing - это набор мощных системно-независимых графических компонентов.

Какая разница между jre и java?

Функционально они эквивалентны, с небольшими отличиями в работе с classpath по умолчанию и поддерживаемыми опциями. Во избежание путаницы, команда jre была удалена в JDK 1.2. Вместо неё оставлена команда "java" как в bin так и в jre/bin.

jre.exe программа запуска java, которая поставляется с Java Runtime Environment. Используются свои собственные внутренние установки по умолчанию, игнорируются установки окружения CLASSPATH и всё, чтобы ни стояло в командной строке -cp или -classpath. Подразумевается, что это немного проще для тех, кто только запускает на выполнение Java программы, а не разрабатывает их.

java.exe программа запуска java, которая поставляется с JDK. Использует установки окружения CLASSPATH как начальную точку поиска, а затем обращается к собственным внутренним параметрам.

Обе служат одной и той же цели - запуск виртуальной Java машины (JVM), выполнение в ней приложения Java, затем остановка JVM. Исходные тексты jre.exe поставляются с JDK. Исходные тексты java.exe поставляются только со специальным дистрибутивом исходных текстов JDK.

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Linus Torvalds:

    "Болтовня ничего не стоит. Покажите мне код."

    Опрос

    Ваша техника?

    Настольный компютер
    Ноутбук
    Смартфон
    iPad
    iPhone
    другое