История и краткий обзор языка Java
Задание для курсового проекта: Разработать справочную систему по стандартным функциям Java.
Содержание
Введение…………………………………………………………
- История и краткий обзор языка Java…………………………………………7
- Описание функций, методов, классов, используемых в программе………11
- Описание контрольного примера: инструкция пользователя, среда разработки……………………………………………………
……………….16 - Среда разработки……………………………………………………
………..16 - Инструкция пользователя………………………………………………
……18
Заключение……………………………………………………
Список литературы…………………………………
Приложение А………………………………………………
Приложение Б………………………………………………
ВВЕДЕНИЕ
Данная курсовая работа представляет собой подведение итогов приобретенных знаний по дисциплине «Объектно-ориентированное программирование». Основной целью данного предмета является приобретение студентами знаний в области построения объектно-ориентированных систем, изучение основных конструкций языка Java, а также получение навыков разработки приложений в среде NetBeans.
Целью написания данного курсового проекта является закрепление полученных знаний и использование их на практике, а также самостоятельное изучения нового материала, необходимого для разработки программного продукта.
Язык Java является полностью объектно-ориентированным. Это означает, что любая программа, написанная на языке Java, должна поддерживать парадигму объектно-ориентированного программирования.
Все компьютерные программы состоят из двух элементов: кода и данных. Более того, концептуально программа может быть организована вокруг своего кода или вокруг своих данных. То есть организация некоторых программ определяется тем «что происходит», а других – тем «на что влияет». Этот подход характеризует программу в виде последовательностей линейных шагов (т.е. кода). Модель, ориентированную на процессы, можно рассматривать в качестве кода, который влияет на данные. Процедурные языки, такие как С, достаточно успешно используют эту модель. Однако такой подход порождает ряд проблем с увеличением размеров и сложности программ.
Для одоления увеличивающейся сложности была начата разработка подхода, названного объектно-ориентированным программированием (ООП). В отличие от традиционного процедурного программирования, объектно-ориентированные программы подразумевают описание классов и, как правило, создание объектов. Такую программу можно характеризовать как данные, которые управляют доступом к коду.
Java – объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последствии приобретенной компанией Oracle). Приложения Java обычно компилируются в специальный байт-код (машинно-независимый код низкого уровня), поэтому они смогут работать на любой виртуальной машине Java (JVM) независимо от архитектуры компьютера. Достоинством подобного способа выполнения программ – в полной независимости байт-кода от операционной системы (ОС) и оборудования, что позволяет выполнять Java-программы на любом устройстве, для которого существует соответствующая виртуальная машина. Другой особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью компилируется виртуальной машиной. Поэтому любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание выполнения.
Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность алгоритмов и программ, реализованных на языке Java. Однако уже был внесен ряд усовершенствований, которые повысили скорость выполнения программ на Java.
Также внутри Java существуют несколько основных семейств технологий:
- Java SE – Java Standart Edition, основное издание Java, которое содержит компиляторы, API, Java Runtime Environment. Подходит для создания пользовательских приложений.
- Java EE – Java Enterprice Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия.
- Java ME – Java Micro Edition, создана для использования на устройствах, ограниченных по вычислительной мощности (например мобильных телефонах, КПК).
- JavaFX – технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform. Она предназначена для создания графических интерфейсов корпоративных приложений и бизнеса.
- Java Card – технология представляет собой безопасную среду для приложений, работающих на смарт-картах и других устройствах с очень ограниченным объемом памяти и возможностями обработки.
К основным возможностям программы можно отнести:
- Автоматическое управление памятью – специальный код будет периодически освобождать память, удаляя объекты, которые уже не будут востребованы программой;
- Расширенные возможности обработки исключительных ситуаций;
- Богатый набор средств фильтрации ввода/вывода;
- Набор стандартных коллекций (массив, список, стек и т.д.);
- Наличие простых средств создания сетевых приложений;
- Встроенные в язык средства создания многопоточных приложений;
- Унифицированный доступ к базам данных;
- Поддержка шаблонов;
- Параллельное выполнение программ.
РАЗДЕЛ 1
ИСТОРИЯ И КРАТКИЙ ОБЗОР ЯЗЫКА JAVA.
Разработка языка Java началась в 1991 г.
Группа программистов (Green Team) из компании Sun Microsystems под руководством Джеймса Гослинга начала работу над проектом “Green”.
Целью проекта являлась разработка и практическая реализация компьютерной аппаратно-программной платформы нового поколения, предназначенной для персонального пользования, удобной и понятно в обращении (компьютер для обычных людей).
Основные идеи проекта:
- дружественный интерфейс;
- надежность функционирования.
Во время работы над проектом “Green” возникла необходимость разработать новый язык программирования, минимально ориентированный под конкретные платформы. Новый язык программирования получил название “Oak” (“дуб”).
Летом 1992 г. была создана рабочая версия, но группа опередила свое время, так как в тот момент промышленность еще не была готова к использованию этого языка. Попытки внедрить разработанную технологию в различные сферы: интерактивное телевидение, игровые приставки закончились неудачей.
В 1993 г. появился web-браузер Mosaic, что привело к распространению Интернета, вышедшего из стен академических лабораторий, по всему миру. Программисты из группы Green Team сразу же осознали, какую роль может сыграть созданный ими язык для расширения возможностей web-браузеров.
В 1994 г. был разработан браузер WebRunnera, позволявший исполнять небольшие интерактивные программы (апплеты), внедрённые в гипертекстовые страницы.
Особенности реализации:
- возможность запуска на разных платформах;
- отсутствие необходимости установки приложений;
- компактный код (для сокращения времени загрузки);
- встроенная поддержка безопасности приложений.
В 1995 г. язык Oak был переименован в Java, а браузер WebRunner в HotJava.
23 мая 1995 года - официальное представление технологии Java. Реализация поддержки технологии Java в браузере Netscape Navigator 2.0 (самый популярный браузер того времени).
В 1997 г. вышла существенно обновлённая версия – Java 2; были выделены отдельные платформы: J2SE, J2EE, J2ME.
Платформа включает в себя:
- язык программирования;
- набор служебных программ (JVM, JRE, JDK и т.п.);
- набор библиотек.
Язык Java похож на С и C++. Их взаимосвязь становится понятной, если проследить историю создания этих языков. Язык С был разработан в 70-х гг. как язык создания операционных систем (в основном системы UNIX). Разработчикам языка хотелось, чтобы он обеспечивал возможность доступа к архитектуре базового аппаратного компьютера. Когда Страуструп (Stroustrup) разрабатывал язык C++, он позаимствовал концепцию класса из языка Simula и концепцию наследования из языка Smalltalk. Тем не менее язык С, ставший основой C++, не был при этом модифицирован и его полезные для системного программирования свойства были перенесены в C++. Когда программисты компании Sun разрабатывали Java, они сохранили основные синтаксические структуры, концепции классов и наследования, имеющиеся в C++, но отказались от некоторых необязательных свойств. В результате язык Java оказался более компактным, чем C++, но с более рациональными синтаксисом и семантикой.
По большей части Java напоминает C++ без тяжелого наследия С, которое обусловливает слабость многих программ на языке C++. Данные в Java строго типизированы; в частности, целочисленный, логический и символьный типы принадлежат к различным типам данных. Также отдельным типом данных являются массивы, а строковый тип данных в Java - это не просто массив символов. Все эти свойства позволяют компилятору Java более полно отслеживать ошибки в программах.
Количество
способов выполнения некоторых действий
уменьшилось. Например, вызов метода
- единственный способ подключения подпрограмм. Поскольку
все объекты являются экземплярами каких-либо
классов, то отпадает необходимость в
специальных вызовах функций или процедур.
Структурные объекты struct также не нужны,
так как тот же эффект достигается при
помощи переменных экземпляра, или полей,
в определении классов.
В языке Java неявным образом присутствуют
указатели, но соответствующий тип данных
отсутствует. Это означает, что от пользователя
скрыты все проблемы с фрагментацией памяти,
ссылками на несуществующие объекты и
другие неприятности, связанные с указателями.
Распределение памяти для указателей
происходит неявным образом во время создания
объектов класса и выполнения операции
new.
Для создания программы на языке Java в первую очередь создается файл имя_файла.java. Имя файла должно совпадать с именем класса, создаваемого в данной программе. Когда программа написана, вызывается компилятор Java. В результате компиляции получается файл с названием имя_файла.class, содержащий байт-коды. Этот файл можно выполнить с помощью интерпретатора Java (виртуальная машина Java).
Можно сказать, что язык Java является достаточно простым языком: он имеет ту же ясную структуру, что и C++, и при этом лишен той неуклюжести, которая свойственна С. Тем не менее эффективность выполнения программ на Java несколько ниже, так как многие из структур языка нуждаются в проверке во время выполнения программы. К тому же, поскольку программы на Java чаще всего интерпретируются как апплеты в виртуальной машине Java, скорость выполнения программ на Java несколько ниже, чем скорость выполнения программ, написанных на компилируемых языках. Но при оценке Java надо помнить об основной области применения этого языка: поскольку он создавался для web-браузеров, потери в скорости выполнения фактически не влияют на результат. Причина этого в том, что скорость передачи информации по сети и скорость обработки и отображения информации на мониторе компьютера все равно ниже скорости работы компьютера пользователя. Поэтому большая часть времени тратится на ожидание очередной порции информации, запрошенной на сервере.
РАЗДЕЛ 2
ОПИСАНИЕ ФУНКЦИЙ, МЕТОДОВ, КЛАССОВ,
ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕ.
В этом разделе мы опишем используемые в программе функции, методы и классы:
java.io.* – библиотека, которая содержит классы для обеспечения ввода-вывода информации, несколько классов абстракции ввода/вывода, а также набор классов для обработки вводимой информации.
java.util.StringTokenizer – небольшой класс, содержащий три конструктора и шесть методов. Экземпляры этого класса могут разбить строку на слова, разделённые некоторыми символами – разделителями.
javax.swing.JFrame – класс для работы с окнами, которые имеют строку заголовка.
javax.swing.* – библиотека для создания графического интерфейса на языке Java. Содержит ряд графических компонентов, таких как кнопки, поля ввода, таблицы и т.д.
javax.swing.JOptionPane – класс описывает стандартные диалоговые окна.
javax.swing.tree.
javax.swing.tree.
public class Main {…} – главный класс программы. Содержит метод
public static void main(String[] args) {…}. Этот метод выполняется вызывается при запуске приложения.
public class NewJFrame extends JFrame – открытый класс NewJFrame, который наследует класс JFrame.
public NewJFrame() {… } – конструктор класса NewJFrame. Вызывается при создании экземпляра класса и инициализирует графический интерфейс.
private void InitList(String mask) {…} – закрытый метод (т.е. он может быть вызван, только внутри своего класса), используется для инициализации списка функций и заполнения соответствующей области окна. Не возвращает значение.
FileInputStream fin = new FileInputStream("data/
BufferedReader br = new BufferedReader(new InputStreamReader(fin)) – создание объекта класса буферизированного потока ввода. Данный объект обеспечивает лёгкость при считывании информации с потока ввода.
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root") – создание корневого узла для модели данных дерева.
str = br.readLine() – данный метод считывает текущую строку из потока ввода и переходит к следующей строке.
StringTokenizer st = new StringTokenizer(list_func[l], "\t\n\r|") – создание объекта, который позволяет разбить строку на слова, используя разделители, указанные в конструкторе.
name = st.nextToken() – метод возвращает следующее отделённое слово.
st.countTokens() – метод возвращает количество отделённых слов, которые ещё не были считаны (например методом st.nextToken()).
node.add(new DefaultMutableTreeNode(st.
jTree1.setModel(new DefaultTreeModel(root)) – метод устанавливает модель дерева для объекта jTree1.
try {…} catch() {…} – блок, который позволяет отследить ошибку, код ошибки, а затем обработать её.
jTree1.setRootVisible(false) – метод запрещает отображение корневого узла в модели дерева.
private void PrintFunc(String name, int num) {…} – закрытый метод, используется для выведения информации о функции в соответствующую область окна.
jTextArea1.setText() – метод устанавливает
текст, отображаемый
str.equals() – метод возвращает true, если строки состоят из одинаковых символов, размещенных на одинаковых позициях в строке.
continue – переход к следующей итерации цикла без завершения текущей.
jTextArea1.append(str + '\n') – метод, добавляет строку в конец текста компонента jTextArea.
private void initComponents() {…} – метод, инициализирующий графический интерфейс программы. Содержит в себе создание таких объектов: jTextArea (текстовая область), jTextField(текстовое поле), jScrollPane (контейнер для больших компонентов), jLabel (текстовая метка), jTree (дерево), jButton (кнопка), jMenu (элемент меню).
setDefaultCloseOperation(
setTitle("") – метод устанавливает заголовок окна.
setBackground(new java.awt.Color(250, 242, 242)) – метод устанавливает цвет фона окна.
jButton1.addActionListener(new java.awt.event.ActionListener(
private void jButton1ActionPerformed(java.
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 14)) – метод устанавливает шрифт текстовой метки.
evt.toString() – метод, возвращает текстовое представление объекта.
node.isLeaf() – метод возвращает true, если узел не имеет дочерних узлов.
node.getParent() – метод возвращает родительский узел объекта.
public class PlayVideo extends JFrame – означает, что публичный (открытый) класс PlayVideo наследует класс JFrame (класс, который используют для создания окна приложения в Swing). Наследование – это процесс, посредством которого один обьект может приобретать свойства другого, то есть обьект может наследовать основные свойства другого обьекта и добавлять к ним черты, характерные только для него. Наследование позволяет поддерживать иерархию классов, что позволяет управлять множеством данных.
setDefaultCloseOperation(EXIT_
JButton button = new JButton("Select File") – создание интерфейса кнопки с названием «Select File».
ActionListener listener = new ActionListener() – переменная listener содержит экземпляр класса, реализующего интерфейс ActionListener. Это интерфейс, считывающий наше действие ( в данном случае – нажатие кнопки «Select File»).
public void actionPerformed(ActionEvent event) – созданное при нажатии кнопки событие, которое передается слушателям кнопки. Представляет собой реализованный интерфейс ActionListener, требующий реализации метода actionPerformed.
JFileChooser chooser = new JFileChooser("."); - создание интерфейса выбора, который выполняется при нажатии на кнопку «Select File». Представляет собой окно выбора файла для воспроизведения.
int status = chooser.showOpenDialog(
if (status == JFileChooser.APPROVE_OPTION) – представляет собой логическое сравнение «true-false». Если результатом является true – направляет пользователя к File file = chooser.getSelectedFile(); (функции выбора файла). Далее идет направление к механизму обработки исключений, начинающийся со слова try:
try {load(file);} – при помощи механизма обработки мы пытаемся выполнить загрузку выбранного файла.
catch (Exception e) {System.err.println("Try again: " + e);} – если при выполнении блока кода возникла ошибка, мы перехватываем исключение и выводим на экран сообщение «Try Again».
pack() – позволяет пользователю
изменять размеры окна по
public void load(final File file) throws Exception – использование открытого пустого метода load для загрузки файла. Служебное слово final используется для запрета перезагрузки метода в дочерних классах.
final Container contentPane = getContentPane(); - возвращает обьект ContentPane для класса Container.
if (player != null) {player.stop();} – представляет собой логическое сравнение. Подразумевает собой остановку воспроизведения файла.
player = Manager.createPlayer(url) – создает образец проигрывателя для данных медиафайлов.
ControllerListener listener = new ControllerAdapter() – в переменной listener содержится экземпляр класса, реализующего интерфейс ControllerAdapter. ControllerAdapter реализует контроллер интерфейса, который в свою очередь осуществляет общий программный интерфейс приложения.
Component vc = player.getVisualComponent() – реализация в проигрывателе визуального компонента. Если проигрыватель не имеет визуального компонента, то getVisualComponent возвращает пустое значение. Такое возможно, например, при проигрывании только звуковых файлов.
if (vc != null) {contentPane.add(vc, BorderLayout.CENTER);center = vc;}
else {if (center != null) {contentPane.remove(center);
РАЗДЕЛ 3
ОПИСАНИЕ КОНТРОЛЬНОГО ПРИМЕРА. ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ, СРЕДА РАЗРАБОТКИ.
3.1 Среда разработки
NetBeans IDE — свободная
интегрированная среда
Для разработки программ в среде NetBeans и для успешной инсталляции и работы самой среды NetBeans должен быть предварительно установлен Sun JDK или J2EE SDK подходящей версии. Среда разработки NetBeans по умолчанию поддерживала разработку для платформ J2SE и J2EE. Начиная с версии 6.0 Netbeans поддерживает разработку для мобильных платформ J2ME, C++ (только g++) и PHP без установки дополнительных компонентов.
Проект NetBeans IDE поддерживается
и спонсируется компанией Oracle, однако
разработка NetBeans ведется независимо
сообществом разработчиков-
По качеству и возможностям последние версии NetBeans IDE не уступают лучшим коммерческим (платным) интегрированным средам разработки для языка Java, таким, как IntelliJ IDEA, поддерживая рефакторинг, профилирование, выделение синтаксических конструкций цветом, автодополнение набираемых конструкций на лету, множество предопределённых шаблонов кода и др.
В версии NetBeans IDE 6.1 декларируется поддержка UML, SOA, языка программирования Ruby (включая поддержку Ruby on Rails), а также средства для создания приложений на J2ME для мобильных телефонов. В версии 6.5 добавлена поддержка языка PHP. Также для тестирования выложен модуль поддержки Python.
NetBeans IDE поддерживает
плагины, позволяя
На идеях, технологиях и в значительной части на исходном коде NetBeans IDE базируются предлагаемые фирмой Sun коммерческие интегрированные среды разработки для Java — Sun Java Studio Creator, Sun Java Studio Enterprise и Sun Studio (для ведения разработки на C, C++ или Фортран). Сравнительно недавно Sun стала предлагать эти среды разработки бесплатно для зарегистрировавшихся в Sun Developer Network (SDN) разработчиков, сама же регистрация на сайте бесплатна и не требует никаких предварительных условий, кроме согласия с лицензией CDDL.
NetBeans IDE доступна в
виде готовых дистрибутивов (
В релизе NetBeans IDE 6.7 была добавлена интеграция с Project Kenai, поддержка языка Groovy и веб-фреймворка Grails. В версии 6.8 — поддержка PHP-фреймворка Symfony, а в 6.9 — Zend Framework.
Для написания кода программы была использована именно эта среда разработки NetBeansIDE . Данная среда разработки была выбрана потому, что активно поддерживается разработчиками самой Java – компанией Oracle, поэтому связка NetBeansIDE + JDK дает высокую производительность и достаточно высокое удобство при написании программ.
- Инструкция пользователя
После запуска программы на экране отображается главное окно приложения (Приложение А, рисунок А.1). «Справочная система по стандартным функциям Java» готова к использованию.
Чтобы получить информацию об интересующей функции, пользователю необходимо выбрать соответствующую функцию в списке, напоминающем дерево (Приложение А, рисунок А.2). Поскольку, одна и та же функция (метод) может быть определена в нескольких различных классах, то программа позволяет выбрать: из какого именно класса брать информацию о функции.
Другой, альтернативный способ поиска функции осуществляется благодаря наличия «быстрого поиска» (Приложение А, рисунок А.3). Для этого пользователь должен в соответствующее поле ввести первые буквы названия интересующей функции. По ходу ввода, система будет отображать результаты поиска в списке функций. Чем больше введено букв из названия функции, тем уже область поиска. Поэтому для достижения наилучших результатов требуется ввести наиболее точное поисковое слово.
Для того, чтобы вернуться в свободный просмотр функций, необходимо нажать на кнопку «Показать все» (Приложение А, рисунок А.4). После этого система выведет список всех доступных функций.
В программе присутствует меню пользователя (Приложение А, рисунок А.5).
Кнопка меню «Выход» предназначена для завершения работы с системой.
Кнопка меню «Обновить список функций» производит поиск по файлам данных программы. Эта функция должна быть использована после внесения изменений в файлы описания функций. После этого изменения вступят в силу.
Кнопка меню «О программе» отображает окно «О программе», содержащее информацию об авторе, дате и др.
ЗАКЛЮЧЕНИЕ
Подводя итоги данного курсового проекта, можно сделать следующие выводы. В ходе работы была разработана программа «Справочная система по стандартным функциям Java». Данный продукт является уникальным в своём роде и в дальнейшем может быть развит до более широких масштабов. Интерфейс программы максимально прост, интуитивен и не должен вызвать никаких затруднений у начинающего пользователя.
Создание курсового проекта позволило закрепить и расширить имеющиеся знания о программировании на языке Java. Также были улучшены навыки работы в среде разработки NetBeans.
СПИСОК ЛИТЕРАТУРЫ
- А.Н.Васильев «Java Объектно-ориентированное программирование.» –«Питер»,2011. – 400с.
- Герберт Шилдт «Swing: Руководство для начинающих»: Пер. с англ. – М.: ООО «И.Д.Вильямс», 2007. – 704с.
- Г. Шилдт «Полный справочник по Java.» – М., Київ: «Вільямс», 2007
- Б. Эккель «Философия Java.» – М., Київ: «Пітер», 2009
- К. С. Хорстманн «Основы Java.» – М.: «Вільямс», 2003
- А. А. Кубенский «Создание и обработка структур данных в примерах на Java.» – Спб.: «БХВ – Петербург», 2001
- Д. Флэнаган «Java в примерах. Справочник.» – Спб: «Символ – Плюс», 2003
- В. Монахов «Язык программирования Java и среда NetBeans (3-е издание).» – «БХВ – Петербург», 2011. – 704с.
- Е. Е. Аккуратов «Знакомьтесь: Java. Самоучитель.» – М.: «Вильямс», 2006
- И. Портянкин «Swing. Эффективные пользовательские интерфейсы.» – «Питер», 2005

- История и Культура язычества
- История и методология выращивания пшеницы яровой
- История и необходимость возникновения денег
- История инквизиции
- История института банкротства в России
- История института банкротства в России
- История института банкротства в России
- История изобразительного искусства
- История изучения грота Оби-Рахмат
- История изучения данного вопроса в отечественной литературе
- История изучения ДНК
- История изучения европейской кавалерии в армии периода Нового времени
- История изучения и статистика детской гиперактивности
- История изучения памяти в психологии