Java как центр архипелага - [11]
Java и Java-машиной. Как уже отмечалось, это важно для компакт-
ности скомпилированных Java-программ и для обеспечения высокой
скорости трансляции.
4.2.3. Java и безопасность
Концепция загрузки об®ектов по сети прозрачным для пользователя
образом столь же привлекательна, сколь и опасна. Если не предп-
ринимать никаких мер и не накладывать никаких ограничений на
возможности Java-аплетов, вход на любую Web-страницу может при-
вести к непредсказуемым последствиям. К счастью, разработчики
языка Java с самого начала уделяли самое пристальное внимание
вопросам информациионной безопасности.
Из языка удалены многие потенциально опасные возможности, такие
как оператор goto или тип данных "указатель". Интерпретируемый
характер выполнения позволяет не допустить выхода за границы
массива, обращения по пустой ссылке и т.п. В свое время за по-
добную осторожность выступал автор языка Паскаль Никлаус Вирт,
отмечавший, что при традиционном подходе программист напоминает
моряка, который носит спасательный круг только на суше.
Мы, однако, не будем подробно останавливаться на "обычной" бе-
зопасности и уделим основное внимание выполнению потенциально
враждебных аплетов. Смежный вопрос - проверка подлинности апле-
тов, снабженных электронной подписью, видимо, будет решен в
последующих версиях Java-систем.
Прежде всего, аплетам, загруженным по сети, запрещены чтения и
запись файлов из локальной файловой системы, а также выполнение
сетевых соединений со всеми хостами, кроме того, с которого был
получен аплет. Кроме того, таким аплетам не разрешается запус-
кать программы на клиентской системе (говоря языком ОС UNIX,
для них недоступны системные вызовы fork и exec), им запрещено
загружать новые библиотеки и вызывать программы, внешние по от-
ношению к Java-машине.
На самом деле, перечисленные ограничения не являются частью
спецификации Java-системы и могут выполняться с большей или
меньшей аккуратностью. Так, в Netscape Navigator 2.0 чтение и
запись локальных файлов действительно полностью запрещены. В то
же время, среда разработки JDK 1.0 компании Sun Microsystems
допускает задание списка каталогов, с которыми аплеты могут ра-
ботать.
Более точно, вне разрешенного списка каталогов аплет не может:
- проверять существование файлов;
- читать/писать/переименовывать файлы;
- создавать каталоги;
- проверять атрибуты файла - тип, время последней модификации,
размер.
Чтобы в JDK сделать каталог доступным для аплета, следует по-
местить в файл ~/.hotjava/properties строки вида
acl.read=/home/welcome
acl.write=/tmp
Перед началом работы аплетов они проверяются верификатором бай-
т-кодов. Верификатор убеждается, что загруженный аплет соот-
ветствует спецификациям, заданным при компиляции вызывающей
программы, что не нарушен формат скомпилированного файла, что
нет переполнения или исчерпания стека, нет некорректных преоб-
разований типов, неправильных действий с регистрами и т.п. Все
эти проверки верификатор осуществляет на основе анализа потоков
данных. Особенно тщательно проверяются конструкции finally об-
работчиков исключительных ситуаций.
Следует отметить, что верный выбор баланса между возможностями
загружаемых аплетов и безопасностью клиентской системы является
очень тонким вопросом. Ряд компаний, например, Argus System
Group, предлагают реализовать на клиентской системе усиленные
меры безопасности, чтобы успешно отражать угрозы со стороны
враждебных аплетов без ограничения свободы действий для "благо-
надежных" программ. К сожалению, предлагаемые решения зависят
от операционной платформы, что противоречит требованию абсолют-
ной переносимости Java-программ. Можно предположить, что инфор-
мационная безопасность еще долгое время будет оставаться одним
из самых сложным и спорных вопросов, касающихся проекта Java.
4.2.4. Java WorkShop
В конце марта 1996 года компания Sun Microsystems об®явила о
выпуске версии 1.0 среды разработки Java WorkShop. У этой среды
есть два замечательных свойства: она полностью написана на язы-
ке Java и имеет интерфейс, выдержанный в Web-стиле. На рис. y1
показан вид экрана при работе в Java WorkShop.
Рис. y1. Так выглядит экран при работе в Java WorkShop.
Следует отметить, что гипертекстовый интерфейс является, пожа-
луй, наиболее естественным для инструментальных сред. Более то-
го, неявно он давно используется, например, при переходе во
включаемый файл или в место ошибки. Принципиально важно, что
теперь гипертекст стал явной концептуальной основой.
Java WorkShop содержит полный набор инструментов, необходимых
для проектирования, разработки, тестирования, отладки и сопро-
вождения программ. В его состав входят:
- Менеджер проектов - инструмент организации информации, сос-
тавляющей проект, а также средство спецификации окружения для
проекта.
- Построитель - инструмент построения результирующих программ
проекта. Построитель ведает перекомпиляцией файлов после внесе-
ния изменений, выдачей гипертекстового списка сообщений об
ошибках и т.п.
- Публикатор - инструмент поддержки коллективной работы над
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.