Код магнитолы

JS - телефон

JS - часы

Оппозиция в России ?

Россия и Украина

Мысли в слух...

Российская...власть ?

Skype

Создаём сайт

Любимые сериалы


На главную

Это - пока-что не проект, просто - мысли в слух.
Попользовавшись сторонними программами, помучавшись с РНР - рано или поздно всё равно приходишь к пониманию необходимости определённой самостоятельности, хотя-бы в малом.
Конечно, можно скачать (к примеру) готовый плеер и установить его на свой сайт, можно воспользоватся <iframe>. Вариантов много - сеть большая. Но, со временем, понимаешь - то, что работает на твоём сайте, не обязательно будет работать на любом устройстве, имеющем процессор.
После довольно долгого ковыряния в славной NET-помойке выяснилось - все процессоры общаются между собой на одном языке. Имя этого языка - байткод. Правда, делают они это не на прямую (байткод не является исполняемым кодом), а при посредничестве Java Virtual Machine (JVM).Существуют различные программы (компиляторы) по переводу некоторых языков программирования в этот самый байткод. Наиболее, на мой взгляд, оптимальные варианты - это VB или Java. Компилируются в байткод : для андроида - в apk-файл и для ОС типа винды - в class-файл. Андроид меня не очень вдохновляет - пусто там, в нутри, как-то. А вот накропать программку на Java и перевести её в class - это интригует.
Оптимальный вариант, в этом случае - компилятор : нарисовал код - скомпилировал - посмотрел, что получилось. Однако, поиметь в наше время такую программу - практически не реально. Не подпускают мокро-мягкие к закромам. По сети гуляет легенда о существовании J2SE SDK - эдакий компилятор java-class. Только, этой легенде более 20 лет и ссылки на скачивание этого чудо компилятора давно протухли. То, что от него осталось, на компилятор мало похоже, а об автономности и говорить нечего. Но попользоваться кое-чем можно.
Современный процессор без JVM - как свадьба без невесты. JVM транслирует байткод в такой формат, который понимает целевая платформа. А эта платформа непременно запустит созданную нами программу.
Попробуем оперется на эту народную мудрость и сотворить что-то вроде видео (- аудио) плеера. А начнём мы с прорисовки внешнего вида нашего плеера - с панели.

Создаём java - файлы :

Рисовать плеер мы будем опираясь на библиотеку AWT, хотя SWING и более современная. Выбирать вам. Разница в оформлении - не большая. Мы будем создавать не frame, а обычный applet. Задача эта, прямо скажем - не благодарная. Более половины того, что есть во frame, в applet - отсутствует (читай - не поддерживается). Это понятно - frame создаётся в cmd.exe т.е. под контролем ОС, а applet нам придется создавать самим. И делать это придётся так, что-бы он понравился браузеру (на уровне - доверия).
Если верить америкосам - делать это не сложно. Берёте свой любимый редактор и набираете в нём следующий код :



Затем переименовываем созданный текстовый файл в player.java и сохраним его. Где вы будете хранить этот файл - решайте сами. Что - бы не усложнять связи, все файлы своего сайта я храню в корневом каталоге, без подкаталогов. Теперь мы подробно разберёмся с тем, что изображено на рис.1 :
Структура класса следующая : внутри класса находится метод(-ы), внутри метода - события, то, что происходит под воздействием этого метода. Метод можно создать самому, а можно воспользоватся готовым, подключив необходимый пакет. Не стоит заморачиватся насчёт определений : класс (под-класс), метод и функция - это одно и то - же. Всё зависит от уровня расположения компонента на иерархической лестнице. Мы создали java - файл, который будет компилироваться. Поэтому - думать о нём лучше как о сlass - файле. Не смотря на внешний вид - это не очень сложный код, просто - в нём много повторений. Начинается код с комментариев (01-05), содержащих элемент (03), который в последсвии будет вставлен в html - разметку. Далее идут импорт - файлы (06-08), это пакет(-ты) содержащий(-ие) метод(-ы) исползуемый в нашем коде. Где содержатся эти подключаемые пакеты - мы узнаем чуть позже, а сейчас остановимся на них чуть подробнее.
***
Использование импорта, не смотря на всю его значимость, вещь добровольная, и вот почему:
выражение (43, рис.1):
pkn.setLayout(new FlowLayout(FlowLayout.LEFT));
можно представить в виде:
pkn.setLayout(new FlowLayout(java.awt.FlowLayout.LEFT));
а выражение:
public void actionPerformed(ActionEvent ae);
можно представить в виде:
public void actionPerformed(java.awt.event.ActionEvent ae); и т.д.
Если указать по ходу кода прямые пути к компонентам и методам, то от пакета импорта (06-08, рис.1) можно отказатся. И ещё одна вещь, с которой вы столкнётесь на начальном этапе: в сетевых примерах, перед пакетом импорта, может встретится выражение:
package name1.name2.name3...;
Не стоит на эту тему заморачиватся - у нас файл будет одиночный, без пакета.
***
Наш класс player (09) открыт для общего пользования public и является наследником (extends) класса компонентов Applet - библиотеки AWT (02). Почему не Swing ? Большой разницы, в нашем случае, я не вижу.
Applet - контейнер библиотеки верхнего уровня. Все имеющиеся у него компоненты добавляются в панель содержимого так - же, как и у контейнера Frame. Мы попытаемся создать не frame, а applet.
Вслед за открывающей скобкой класса (10) следует перечень переменных (11-15) - просто разгружаем метод. Начинается класс player с метода init() (16 ) - это первый (и обязательный) из методов обеспечения жизненного цикла. Кроме него в этот цикл входят методы start(), stop() и...не будем увлекаться - просто init() - обязателен. Остальные методы цикла программа добавит сама, если мы забудем. Компилятор - таки имеет много гитик ! В этом методе мы создаём компоненты панели плеера. Метод init() должен быть в каждом апплет - файле. В большинстве случаев он заменяет (выражение "заменяет" - условно) метод main(). Именно с него начинается исполнение нашей программы.
Внешне это будет выглядеть как окно заданного размера (03). В него мы добавим несколько компонентов, количество которых и их расположение, зависит от типа диспетчера компоновки. В нашем случае - это BorderLayout (19). Хотя, кое - где мы его заменим (27 и 43). Он делит фрейм на пять секторов : NORTH (30), SOUTH (49), WEST, EAST (39) и CENTER (23). Сектор EAST (39) мы отведём под меню будущего плейлиста (31-36). В каждый сектор мы поместили по одному компоненту. А в такие компоненты, как - panel (41), мы поместили ещё пять компонентов (44-48). Панели можно задать собственный цвет (20,22,26,38,42). Логика примерно такая : выбираем необходимый компонент и, если он поддерживается родителем (панель), добавляем его, с указанием месторасположения.
Пусть это будет графической частью нашей задумки.
На всякий случай, просто - на всякий случай, сотворим похожий плеер, но по SWING - говски. Хуже не будет.
Основной смысл нашего мероприятия вовсе не создание панели будущего плеера. Главное - наша панель должна появлятся (а в будущем - и работать) в любой среде. Как минимум, она должна появится в Window, после включения её в html - раэметку.

продолжить...