Создание и публикация библиотеки Android
Наша жизнь как разработчиков Android была бы намного сложнее, если бы не все те сторонние библиотеки, которые мы любим включать в наши проекты. В этом руководстве вы узнаете, как отдать предпочтение сообществу разработчиков, создав и опубликовав свои собственные библиотеки Android, которые люди могут легко добавлять и использовать в своих проектах.
1. Создание библиотеки Android
Если ваша библиотека будет состоять только из классов Java, упаковывание ее в виде JAR и распространение ее с помощью файлового хоста, возможно, самый быстрый и простой способ поделиться ею. Если бы вы создали его из консоли, то подойдет следующая команда:
bash jar cvf mylibrary.jar Class1.class Class2.class . ClassN.class
Однако в этом руководстве показано, как работать с более сложными библиотеками, которые содержат не только классы Java, но также различные типы файлов и ресурсов XML. Такие библиотеки создаются в виде модулей библиотеки Android и обычно упаковываются в файлы AAR .
Давайте создадим простую библиотеку Android, которая предлагает пользовательский View для разработчиков, которые ее используют.
Шаг 1: Добавить новый модуль
Для начала добавьте новый Android-модуль в ваш проект, выбрав New> New Module из меню File . Вам будет показан следующий экран, который предлагает множество вариантов:
Выберите библиотеку Android и нажмите Далее . В следующей форме введите имя вашей библиотеки и нажмите Далее . Я буду называть эту библиотеку моей маленькой библиотекой.
На последнем экране выберите Add no Activity и нажмите Finish .
Ваш проект теперь будет иметь два модуля, один для приложения и один для библиотеки. Вот как выглядит его структура:
Шаг 2. Создайте макет
Создайте новый макет XML, щелкнув правой кнопкой мыши на папке res вашего библиотечного модуля и выбрав New> XML> Layout XML File . Назовите это my_view.xml .
Чтобы этот учебник был простым, мы LinearLayout собственный View котором есть два виджета TextView внутри LinearLayout . После добавления текста в виджеты TextView XML-файл макета должен выглядеть следующим образом:
Шаг 3: Создайте класс Java
Создайте новый класс Java и назовите его MyView.java . Обязательно поместите этот файл в каталог src модуля библиотеки, а не в модуль приложения.
Чтобы этот класс вел себя как представление, сделайте его подклассом класса LinearLayout . Android Studio предложит вам добавить несколько конструкторов в класс. После их добавления новый класс должен выглядеть так:
“ `Открытый класс Java MyView расширяет LinearLayout <
Как видите, теперь у нас есть два конструктора. Чтобы избежать добавления кода инициализации в каждый конструктор, вызовите метод с именем initialize для каждого конструктора. Добавьте следующий код в каждый конструктор:
В методе initialize вызовите inflate чтобы связать макет, созданный на предыдущем шаге, с классом.
java private void initialize(Context context)
2. Использование библиотеки локально
Теперь, когда библиотека готова, давайте использовать ее в модуле приложения того же проекта, чтобы убедиться в отсутствии проблем. Для этого добавьте его в качестве зависимости compile в файл build.gradle модуля приложения:
groovy compile project(«:mylittlelibrary»)
Создайте новый Java-класс MainActivity внутри модуля приложения. Сделайте его подклассом класса Activity и переопределите его метод onCreate .
“ `открытый класс Java MainActivity extends Activity <
Внутри метода onCreate создайте экземпляр пользовательского представления, используя его конструктор. Передайте его методу setContentView чтобы он заполнил все пространство экрана Activity :
“ `java @Override protected void onCreate (Bundle saveInstanceState) Ваша Activity сейчас готова. После добавления его в манифест приложения создайте свой проект и разверните приложение на устройстве Android. Вы должны увидеть пользовательский вид при запуске приложения. Bintray – это популярная платформа, которую вы можете использовать для публикации библиотек Android. Это бесплатно и легко в использовании. Начните с создания учетной записи на Bintray. После входа в свою учетную запись вы увидите, что у вас уже есть шесть репозиториев. Вы можете использовать один из них или создать новый репозиторий. Для этого урока я буду использовать репозиторий Maven, который является репозиторием Maven. Посетите страницу своего профиля и нажмите кнопку « Изменить» . На следующей странице щелкните ссылку API Key для просмотра вашего API-ключа. Запишите ключ, потому что он понадобится вам для аутентификации при использовании плагина Bintray. Чтобы взаимодействовать с Bintray в Android Studio, вы должны включить плагин Bintray в dependencies файла build.gradle вашего проекта. groovy classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2’ Поскольку вы будете загружать библиотеку в репозиторий Maven, вы также должны добавить плагин Maven, как показано ниже. groovy classpath «com.github.dcendents:android-maven-gradle-plugin:1.3» Откройте файл build.gradle вашего библиотечного модуля и добавьте следующий код, чтобы применить плагины, которые мы добавили на предыдущем шаге. groovy apply plugin: ‘com.jfrog.bintray’ apply plugin: ‘com.github.dcendents.android-maven’ Плагин Bintray будет искать файл POM при загрузке библиотеки. Даже если плагин Maven генерирует его для вас, вы должны указать значение тега groupId и значение тега version самостоятельно. Для этого используйте переменные group и version в файле Gradle. groovy group = ‘com.github.hathibelagal.librarytutorial’ // Change this to match your package name version = ‘1.0.1’ // Change this to match your version number Если вы знакомы с Maven и вам интересно, почему мы не указали значение тега artifactId , это потому, что плагин Maven по умолчанию будет использовать имя вашей библиотеки в качестве artifactId . Для соответствия стандартам Maven ваша библиотека также должна иметь JAR-файл, содержащий исходные файлы библиотеки. Чтобы сгенерировать файл JAR, создайте новую задачу Jar , generateSourcesJar и укажите расположение исходных файлов с помощью функции from . groovy task generateSourcesJar(type: Jar) Также рекомендуется, чтобы в вашей библиотеке был JAR-файл, содержащий Javadocs. Поскольку в настоящее время у вас нет Javadocs, создайте новую задачу Javadoc , генерируйте Javadocs, чтобы сгенерировать их. Используйте переменную source чтобы указать расположение исходных файлов. Вам также следует обновить переменную classpath чтобы задача могла найти классы, принадлежащие Android SDK. Вы можете сделать это, добавив к нему возвращаемое значение метода android.getBootClasspath . groovy task generateJavadocs(type: Javadoc) Затем, чтобы сгенерировать JAR из Javadocs, создайте задачу Jar , generateJavadocsJar и передайте свойство destinationDir generateJavadocs в функцию from . Ваша новая задача должна выглядеть так: groovy task generateJavadocsJar(type: Jar) Чтобы убедиться в том, что задача generateJavadocsJar запускается только после завершения задачи generateJavadocs , добавьте следующий фрагмент кода, который использует метод dependsOn для упорядочивания задач: groovy generateJavadocsJar.dependsOn generateJavadocs Чтобы включить исходные файлы и JAR-файлы Javadoc в список артефактов, которые будут загружены в репозиторий Maven, необходимо добавить имена их задач в configuration называемую архивами . Для этого используйте следующий фрагмент кода: Теперь пришло время выполнить задачи, которые мы создали на предыдущих шагах. Откройте окно Gradle Projects и найдите задачу с именем install . Дважды щелкните его, чтобы запустить задачи, связанные с модулем библиотеки. По завершении работы у вас будет все необходимое для публикации библиотеки, действительный файл POM, файл AAR, JAR-файл с исходным кодом и JAR-файл Javadocs. Чтобы настроить плагин, вы должны использовать закрытие bintray в вашем файле Gradle. Сначала выполните аутентификацию, используя переменные user и key , соответствующие вашему имени пользователя Bintray и ключу API соответственно. На Bintray ваша библиотека будет находиться внутри пакета Bintray . Вы должны предоставить подробную информацию об этом, используя интуитивно названные параметры repo , name , licenses и vcsUrl в закрытии pkg . Если пакет не существует, он будет создан автоматически для вас. Когда вы загружаете файлы в Bintray, они будут связаны с версией пакета Bintray. Следовательно, pkg должен содержать закрытие version , для свойства name которого установлено уникальное имя. При желании вы также можете предоставить описание, дату выпуска и тег Git, используя параметры desc , vcsTag и vcsTag . Наконец, чтобы указать файлы для загрузки, установите значение параметра configuration в архивы . Это пример конфигурации: Снова откройте окно Gradle Projects и найдите задачу bintrayUpload . Дважды щелкните по нему, чтобы начать загрузку файлов. После завершения задачи откройте браузер, чтобы перейти на страницу сведений о пакете Bintray. Вы увидите уведомление о том, что у вас есть четыре неопубликованных файла. Чтобы опубликовать эти файлы, нажмите на ссылку « Опубликовать» . Ваша библиотека теперь доступна в виде пакета Bintray. После того, как вы предоставите URL-адрес своего хранилища Maven, а также идентификатор группы, идентификатор артефакта и номер версии, любой разработчик сможет получить доступ к вашей библиотеке. Например, чтобы использовать созданную нами библиотеку, разработчики должны включить следующий фрагмент кода: Обратите внимание, что разработчик должен явно включить ваш репозиторий в список repositories прежде чем добавлять библиотеку в качестве зависимости compile . По умолчанию Android Studio выполняет поиск библиотек в хранилище под названием JCenter . Если вы включите свою библиотеку в репозиторий JCenter, разработчикам не нужно будет ничего добавлять в свой список repositories . Чтобы добавить свою библиотеку в JCenter, откройте браузер и перейдите на страницу сведений о пакете Bintray. Нажмите кнопку с надписью Добавить в JCenter . Затем вы попадете на страницу, которая позволяет вам составить сообщение. Вы можете использовать поле « Комментарии», чтобы при желании упомянуть любую информацию о библиотеке. Нажмите кнопку « Отправить» , чтобы начать процесс проверки Bintray. В течение одного или двух дней сотрудники Bintray свяжут вашу библиотеку с репозиторием JCenter, и вы сможете увидеть ссылку на JCenter на странице сведений о вашем пакете. Любой разработчик может теперь использовать вашу библиотеку без изменения списка repositories . Из этого руководства вы узнали, как создать простой модуль библиотеки Android и опубликовать его как в своем собственном репозитории Maven, так и в репозитории JCenter. Попутно вы также узнали, как создавать и выполнять различные типы заданий. Чтобы узнать больше о Bintray, посетите руководство пользователя Bintray . A library is a collection of compiled code that you can add to your project. In IntelliJ IDEA, libraries can be defined at three levels: global (available for many projects), project (available for all modules within a project), and module (available for one module). A Java library can include class files, archives and directories with class files as well as directories with native libraries .dll , .so , or .jnilib . This information is valid for projects that are built with the native IntelliJ IDEA builder. If you’re using a build tool, such as Maven or Gradle, make all changes using the build file. After you define a library and add it to module dependencies, the IDE will be supplying its contents to you as you write your code. IntelliJ IDEA will also use the code from the libraries to build and deploy your application. You can also create a new library from the JAR files located within a project content root. Select these files in the Project tool window, and then select Add as Library from the context menu. From the main menu, select File | Project Structure Ctrl+Alt+Shift+S . Under Platform Settings , select Global Libraries . Click and select one of the following: Select Java or Kotlin/JS to add a library from the files located on your computer. In this dialog, you can also: add classes to an existing library, specify an external documentation URL, exclude items from a library, or remove a library. References to global libraries are stored in the IDE configuration directory in options | applicationLibraries.xml . From the main menu, select File | Project Structure Ctrl+Alt+Shift+S . Under Project Settings , select Libraries . Click and select one of the following: Select Java or Kotlin/JS to add a library from the files located on your computer. Select the module or modules to which you want to add the new library. In this dialog, you can also: add classes to an existing library, specify an external documentation URL, exclude items from a library, or remove a library. References to project libraries are stored together with the project in the .idea folder in libraries . Global and project libraries are not available until you add them to module dependencies. From the main menu, select File | Project Structure | Project Settings | Modules . Select the module for which you want to add a library and click Dependencies . Click the button and select Library . In the dialog that opens, select a project or a global library that you want to add to the module. Alternatively, click New Library and select how do you want to add a new library: you can add a Java and Kotlin libraries from files on your computer, or download a library from Maven. References to module libraries are stored in the module .iml file. This file is used for keeping module configuration. For more information on module files, refer to Modules. From the main menu, select File | Project Structure Ctrl+Alt+Shift+S and click Libraries . Click and select From Maven . In the next dialog, specify the library artifact (for example, org.jetbrains:annotations:16.0.2 ). If you don’t know its exact name, enter the key words and click . You can also specify another library location, and select whether you want to download transitive dependencies, source files, Javadoc files, or annotations. IntelliJ IDEA will download the library from Maven or Nexus public repositories. You can also configure a custom remote repository. Once the library is added, you can add more classes to it:
From the main menu, select File | Project Structure . Then click Global Libraries to modify a global library or Libraries to modify a project library.3. Публикация вашей библиотеки на Bintray
Шаг 1: Добавьте необходимые плагины
Шаг 2: применить плагины
Шаг 3: Укажите детали POM
Шаг 4. Создайте JAR-файл источника
Шаг 5: Сгенерируйте Javadoc JAR
Шаг 6: Включите сгенерированные файлы JAR
Шаг 7: Запустите задачи
Шаг 8. Настройте плагин Bintray
Шаг 9: загрузка файлов с помощью плагина Bintray
4. Использование библиотеки из Bintray
5. Добавление библиотеки в JCenter
Вывод
Libraries
Define a library
Define a global library
Define a project library
Add a library to module dependencies
Download a library from Maven
Add classes to a library
To modify a module library, select File | Project Structure from the main menu and go to Modules | Dependencies . Select the library that you want to modify and click .
Click and select the classes you want to add in the dialog that opens.
For a Java library, these may be individual class and java files, directories and archives jar and zip containing such files,or directories with Java native libraries .dll , .so or .jnilib .
IntelliJ IDEA will analyze the selected files and folders, and automatically assign their contents to the appropriate library categories (Classes, Sources, Documentation, Native Library Locations, and so on).
When IntelliJ IDEA cannot guess the category (for example, when you select an empty folder), a dialog will be shown, in which you will be able to specify the category yourself.
Include specific transitive dependencies
If you want to include only specific transitive dependencies, you can use the library properties editor.
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S , and go to Modules | Dependencies .
Select the necessary Maven library and click .
In the next dialog, click Edit , and then click Configure next to the Include transitive dependencies option.
Select the dependencies you want to include in the library and click OK .
Change the library level
Move a library to a higher level
In IntelliJ IDEA, you can move a project or a module library to a higher level. This is helpful if you want to extend its scope of usage. For example, use this procedure if you want to use a module library across the project or the entire IDE.
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S and locate the library that you want to change.
Right-click the necessary library and select Move to Project Libraries or Move to Global Libraries .
Copy a library to a lower level
You can create a copy of a library on a lower level. For example, use this procedure if you want to add more classes to a project library, but you want to use them in one module only.
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S and locate the library that you want to change.
Right-click the necessary library and select Copy to Project Libraries or Add to Modules .
Exclude library items
IntelliJ IDEA allows you to temporarily exclude library items in order to increase IDE performance. You can exclude folders, archives (for example, JARs) and folders within archives.
Classes from excluded packages won’t be shown in code completion suggestion lists, references to such classes will be shown in the editor as unresolved, and so on. However, when you compile or run your code, a library will still be used as a whole, irrespective of whether there are excluded items in that library or not.
Exclude items from a project or a global library
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S and click Libraries .
Click and select the library items that you want to exclude.
Exclude items from a module library
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S and go to Modules | Dependencies .
Select the library that you want to modify and click .
Click and select the library items that you want to exclude.
Excluded items will be marked with the icon. To return library items to their original state, remove the excluded items.
Configure a custom remote repository
You can view the full list of remote repositories and add a custom repository in the settings. Note that IntelliJ IDEA can load libraries from Maven even if you don’t use Maven as a build tool for your project.
In the Settings dialog Ctrl+Alt+S , go to Build, Execution, Deployment | Remote Jar Repositories .
Click Add in the corresponding dialog section, and specify the repository URL.
Configure library documentation
You can add library documentation to IntelliJ IDEA so that you can get information about symbols and method signatures right from the editor in the Quick Documentation popup.
You can also configure external documentation by specifying the path to the reference information online. External documentation opens the necessary information in a browser so that you can navigate to related symbols and keep the information for further reference at the same time.
If you’re downloading a library from Maven, select the JavaDoc checkbox to get the library documentation together with the library code.
Specify library documentation paths
To view external library documentation, configure the documentation URL first.
In the Project Structure dialog Ctrl+Alt+Shift+S , select Libraries .
Select the necessary library, click the icon and enter the external documentation URL.
Apply the changes and close the dialog.
Add library documentation to your project
You can add downloaded documentation to your project to be able to access it offline.
From the main menu, select File | Project Structure Ctrl+Alt+Shift+S and click Libraries .
Select the library for which you want to add the documentation and click in the right section of the dialog.
In the dialog that opens, select the file with the documentation and click Open .
Русские Блоги
Это руководство проведет вас через процесс использования подключаемого модуля Gradle Build Init для создания новой библиотеки Java, которая может использоваться в других библиотеках и приложениях JVM.
Что ты будешь строить
Вы создадите библиотеку Java, которая следует соглашениям Gradle.
что тебе нужно
Текстовый редактор или IDE
ОдинGradle, Версия 5.0 или выше
Создать проект библиотеки классов
Gradle поставляется со встроенным плагином, который называется Build Init plugin. вЭто задокументировано в руководстве пользователя Gradle.. Плагин предоставляет задачу под названием init , Вы можете сгенерировать проект. В init Использование задачи (также встроено) wrapper Задача создать скрипт-оболочку Gradle gradlew 。
Первый шаг — создать папку для нового проекта и изменить каталог на эту папку.
Запустите задачу инициализации
В новом каталоге проекта запустите init Задача и java-library При появлении запроса выберите тип проекта. По другим вопросам нажмите Enter, чтобы использовать значение по умолчанию.
Если вы предпочитаете Kotlin DSL, вы можете выбрать kotlin Сборка скрипта DSL.
В init Задача выполняется первой wrapper Задача, затем сгенерируйте gradlew с gradlew.bat Скрипт упаковки. Затем он создает новый проект со следующей структурой:
- Созданная папка для упаковки файлов
- Исходная папка Java по умолчанию
- Папка для тестирования Java по умолчанию
Теперь у вас есть компоненты, необходимые для простого проекта библиотеки Java.
Просмотр созданного файла проекта
ВНастроитьФайл сильно прокомментирован, но активна только одна строка:
- Это присвоит имя корневому проекту.
Создано build.gradle В файле также много комментариев. Активная часть скопирована сюда (обратите внимание, что номер версии зависимости может быть обновлен в более поздней версии Gradle):
- Общественный Bintray искусственный склад
- Это пример зависимости, которая была экспортирована потребителю, что означает, что ее можно найти в пути к его классам компиляции.
- Это пример зависимости, которая используется внутри компании и не будет отображаться пользователям в ее собственном пути к классам компиляции.
- Библиотека тестов JUnit
Скрипт сборки добавитjava-libraryПлагин. это java-base Расширение плагина и добавление других задач для компиляции исходного кода Java.
файл src/main/java/demo/Library.java Покажи это здесь:
Сгенерированная спецификация JUnit src/test/java/demo/LibraryTest.java Следующее:
Созданный тестовый класс имеет единственныйJUnit 4контрольная работа. Создание тестового экземпляра Library Этот класс назовите это someLibraryMethod Метод и проверьте, истинно ли возвращаемое значение.
Библиотека классов сборки JAR
Для сборки проекта запустите build задача. Вы можете использовать обычный gradle Command, но когда проект содержит сценарий оболочки, вы можете использовать его вместо него.
-
При первом запуске сценария-оболочки gradlew загрузка версии gradle и сохранение ее локально в папке
При первом запуске сборки Gradle проверит
/.gradle Наличие библиотеки JUnit и других перечисленных зависимостей в кэше каталога. В противном случае эти библиотеки будут загружены и сохранены там. В следующий раз, когда вы запустите сборку, будет использована кешированная версия. В build Задача скомпилирует класс, запустит тест и сгенерирует тестовый отчет.
Вы можете просмотреть отчет о тестировании, открыв выходной файл HTML, расположенный по адресу build/reports/tests/test/index.html 。
Пример отчета выглядит так:
Вы можете build/libs Найдите недавно упакованный файл JAR в каталоге с именем demo.jar . Убедитесь, что файл архива действителен, выполнив следующую команду:
Вы должны увидеть требуемый файл манифеста MANIFEST.MF -И скомпилирован Library учебный класс.
- Поскольку плагин Java-библиотеки Gradle предполагает, что источники вашего проекта организованы в обычном макете проекта, все эти операции могут выполняться без какой-либо дополнительной настройки в сценарии сборки. Вы можете настроить макет проекта в соответствии с требованиями руководства пользователя.
Поздравляем, вы выполнили первый шаг по созданию библиотеки Java! Теперь вы можете настроить его в соответствии с потребностями вашего проекта.
Пользовательская библиотека JAR
Обычно вам нужно, чтобы имя файла JAR включало библиотекуверсия. в состоянии пройти version Установите свойства верхнего уровня в скрипте сборки для упрощения реализации, как показано ниже:
Беги сейчас jar задача:
И обратите внимание на сгенерированный файл JAR build/libs/demo-0.1.0.jar Содержит ожидаемую версию.
Другое распространенное требование — настроить файл манифеста, обычно путем добавления одного или нескольких атрибутов. поКонфигурация jar task, Включите имя и версию библиотеки в файл манифеста. Добавьте в конец скрипта сборки следующее:
Чтобы убедиться, что эти изменения работают должным образом, пожалуйста, jar Снова запустите задачу, на этот раз также извлеките файл манифеста из JAR:
Смотри сейчас META-INF/MANIFEST.MF В содержимом файла вы должны увидеть следующее:
- Узнайте больше о настройке JAR Контрольный список — это лишь одно из многих свойств, которые можно настроить для задачи jar. Для получения полного списка см. Раздел Jar справочника по языку Gradle и раздел Jar и создание архива в Руководстве пользователя Gradle. Чтобы
Теперь вы можете попробовать скомпилировать код Java, используя библиотеку, которую вы только что создали для выполнения этого упражнения.
Добавить документацию по API
В java-library Плагин передает это javadoc В задачу встроена поддержка инструмента документации Java API.
Код, сгенерированный плагином Build Init, уже находится в Library.java Комментарии добавляются к файлу. Измените комментарий, чтобы он стал javadoc отметка.
пробег javadoc задача.
Вы можете javadoc Просмотрите сгенерированный файл, открыв HTML-файл, расположенный build/docs/javadoc/index.html 。
Резюме
Это оно! Теперь вы успешно создали проект библиотеки Java, упаковали его как JAR и использовали в отдельном приложении. В процессе вы узнали, как:
Java как создать библиотеку
[an error occurred while processing this directive]
Конспект лекций по Java. Занятие 6
[an error occurred while processing this directive](none)
- Практическая работа
- Знакомство с библиотеками и пакетами.
- Использование пакетов в программах
- Создание своих собственных пакетов
- Замечания по кодировке
- Краткие пояснения к примеру
Практическая работа
Для повторения и закрепления материала предыдущих занятий рассмотрим пример класса, в котором выполняется работа с массивами, а также реализован статический и обычный метод.
Это класс DoubleVector (файл DoubleVector.java). Он предназначен для работы с векторами. В приведенном примере реализовано только скалярное умножение векторов, но при необходимости этот класс можно расширить другими операциями над векторами.
- Данный класс не лишен недостатков. Он предполагает, что при умножении оба вектора имеют одинаковую длину. Для устранения подобных недостатков в Java следует применять аппарат исключительных ситуаций (exceptions), но мы его еще не рассматривали.
Знакомство с библиотеками и пакетами.
Библиотека Java — это сборник классов. Если программе нужен какой-то класс, то нужно подключить библиотеку, в которой этот класс находится. Для этого либо устанавливается переменная окружения CLASSPATH, либо задается параметр вызова компилятора и JVM. Для транслятора (javac.exe) — это параметр -classpath, для JVM (java.exe) — это параметр -cp.
Обычно физически библиотека — это jar-файл (rt.jar, например). Но свою личную библиотеку можно сделать и просто в каком-либо каталоге. Кроме того, библиотека может быть zip-файлом.
Но библиотека является довольно крупным хранилищем классов. На практике требуется какой-то дополнительный механизм разбиения всего множества классов, хранящихся в библиотеке на отдельные части. В Java таким механизмом являются пакеты.
Пока познакомимся с использованием пакетов из стандартной библиотеки Java. Лучше всего обратиться к документации по API Java. Полный список пакетов стандартной библиотеки Java:
Нужно разобраться с именами пакетов. Как видно, имя составное, разделенное точками. Это связано с общепринятым в Java принципом построения имен пакетов. Этот принцип состоит в том, что в имени пакета присутствует Internet-адрес разработчика пакета в обратном порядке. На примере:
Пусть Ваш адрес petr@provider.da . Тогда все имена пакетов Ваших приложений должны начинаться с «da.provider.petr.». Так, для пакета, содержащего вспомогательные сервисные классы подойдет имя «da.provider.petr.util».
Кроме того, с именем пакета связана структура каталогов, в которых должны размещаться классы. Это будет рассмотрено подробнее позже, когда будем рассматривать создание собственных пакетов.
Некоторые важные пакеты Java
- java.lang — «самый базовый» из всех базовых пакетов. Без него Java не работает.
- java.io — пакет поддержки ввода/вывода.
- java.util — классы поддержки коллекций объектов, работа с календарем, и др. полезные классы.
- java.awt — пакет AWT: поддержка визуального программирования (базовый пакет).
- javax.swing — пакет SWING: новый пакет визуального программирования. Появился в Java2, базируется на AWT и функционально замещает его (не полностью).
- java.applet — пакет для поддержки создания аплетов.
Использование пакетов в программах
Для того чтобы класс из библиотеки мог быть использован в программе, его нужно подключить. Для этого в начале java-файла нужно поместить оператор «import». Например, пусть требуется использовать класс ArrayList в разрабатываемом нами классе Ex1 (ArrayList находится в пакете java.util).
Тогда файл Ex1.java может начинаться примерно так:
далее в программе мы уже можем использовать ArrayList. Например,
Если в одном программном модуле требуется несколько классов из одного пакета, то можно подключить весь пакет, например,
- Пакет java.lang можно не подключать, он подключается автоматически.
Создание своих собственных пакетов
Для создания собственного пакета нужно
- 1. Определиться с именем пакета. Пусть, например, Internet-адрес равен my@prov.ua и мы хотим создать пакет вспомогательных программ (подходящее имя — util). Тогда полное имя пакета должно быть ua.prov.my.util.
- 2. Создать необходимую структуру каталогов. Нужно выбрать или создать каталог, где мы будем хранить все свои пакеты. Пусть, например, это каталог c:\javaproj. В нем нужно создать каталог ua, в каталоге ua создать каталог prov, в нем — my, и наконец в my — util. Все java-файлы создаваемого пакета должны помещаться в каталог util. Т.е. структура имени пакета определяет структуру каталогов.
- 3. Указать путь к пакету в bat-файлах трансляции и выполнения. Для удобства работы со своими пакетами желательно прописать путь к пакетам в bat-файлах трансляции и выполнения java-программ. Приведем примеры bat-файлов j.bat и jr.bat, в которых указан путь к выбранному нами для хранения всех пакетов каталогу c:\javaproj. Файл для трансляции (j.bat) Файл для выполнения (jr.bat)
- 4. В java-файлах пакета указать оператор package. Первым оператором в каждом java-файле пакета должен быть оператор package, в котором указано имя данного пакета. В нашем случае это должен быть оператор вида
Реализуем простой пример. Создадим в каталоге util такой файл S.java.
Оттранслируем его командой
Теперь вернемся к примеру в начале занятия и модифицируем его.
- 1. В начало файла вставим
- 2. Строки
Замечания по кодировке
Для того, чтобы запустить данный пример, можно просто скопировать текст примера в буфер, а потом в некотором редакторе создать файл Dialog1.java и скопировать в него содержимое буфера.
Единственная проблема — в кодировке русских символов. При формировании диалога используется кодировка Windows 1251. Поэтому, если текст будет набран в другой кодировке, то он будет отображен в окне приложения неправильно.
Каждый текстовый редактор имеет свои способы переключения кодировок. Скажем, при использовании встроенного редактора Far-Manager изменить кодировку с DOS (KOI8-R) на Win (Windows 1251) можно при помощи клавиши F8.
Краткие пояснения к примеру
1. В примере использованы следующие классы стандартной библиотеки Java
- UIManager — рассмотрим позднее;
- JFrame — позволяет сформировать основное окно приложения. Все остальные визуальные компоненты помещаются внутрь этого окна.
- Container — класс для визуальных классов-контейнеров, т.е. визуальных компонент, которые могут внутри себя содержать другие визуальные компоненты.
- JLabel — класс для создания меток.
- WindowListener и WindowAdapter — as is.
2. «фрагмент as is (1)» обеспечивает Windows Look&Fill. Закомментируем его и посмотрим, что получится.
3. «фрагмент as is (2)» обеспечивает завершение всего приложения в случае, если закрылось главное окно приложения. Тоже полезно закомментировать и посмотреть, что получиться.
4. Строки
имеют очевидный смысл. (см.документацию по JFrame в пакете javax.swing).
5. Строки
требуют пояснения. Главное окно (JFrame) устроено сложным образом. Оно состоит из ряда элементов. Тот элемент, в который следует добавлять другие визуальные компоненты, может быть получен при помощи метода getContentPane(). Мы запоминаем ссылку на него в переменной ‘c’ и потом используем его во второй строке фрагмента, которая просто создает и добавляет (метод add) метку на окно.