Java - платформа для академической среды - Андрей Дмитриев

Страница создана Добрыня Серов
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
Java - платформа для академической среды - Андрей Дмитриев
Java – платформа для
академической среды

Андрей Дмитриев
andrei-dmitriev@yandex.ru
http://in4mix2006.narod.ru/
2008

   Copyright (C) 2000 - 2008 Sun Microsystems, Inc. All rights reserved.
                                                                           1
Java - платформа для академической среды - Андрей Дмитриев
Этот доклад НЕ о том, что:
•   Учить программировать надо только на Java
•   Java – язык программирования #1
•   Java лучше, чем C/C++, Pascal, Python, Ruby, …
•   Java превосходит .Net
•   NetBeans – лучшая среда разработки
•   Правильно учить программированию ....
•   …

                                                     2
Java - платформа для академической среды - Андрей Дмитриев
Темы доклада
• Java – это открытая платформа, а не только язык
  > с открытым кодом
  > с обширными возможностями по интеграции
• Применимость Java в академическом окружении
  > в образовательном процессе
  > в научных исседованиях
• Академические инициативы Sun Microsystems в
  России

                                                    3
Java - платформа для академической среды - Андрей Дмитриев
Платформа Java

                 4
Java - платформа для академической среды - Андрей Дмитриев
Java в цифрах
• 5 000 000 000 устройств снабжены Java
  >   2 100 000 000 телефонов с поддержкой Java
  >   800 000 000 настольных систем с Java
  >   2 500 000 серверов используют GlassFish
  >   11 000 000 используют JavaTV
• 6 000 000 Java разработчиков.
• > 450 000 выданных сертификатов.
• Множество курсов по технологиям Java и на основе
  Java в учебной программе ведущих университетов
  мира.

                                                     5
Java - платформа для академической среды - Андрей Дмитриев
Популярность книг
(количество проданных экземпляров)

  Источник: http://radar.oreilly.com/archives/2007/05/state_of_the_co_10.html

                                                                                6
Java - платформа для академической среды - Андрей Дмитриев
Открытый код
• Sun Microsystems открыла код для всех основных
  компонент Java Platform:
  >   OpenJDK (включая HotSpot VM)
  >   PhoneME
  >   GlassFish
  >   NetBeans
  >   …
• Огромное количество приложений и библиотек с
  открытым кодом на Java
  > java.net

                                                   7
Языки программирования в
проектах с открытым кодом

                            8
Что важно для обучения
•
    Преподавателю
    >
        Возможность демонстрировать требуемый
        набор концепций языков и технологий
        программирования
    >
        Готовые материалы для использования в
        курсе
    >
        Простота администрирования
•
    Слушателю
    >
        Переиспользуемость навыков при изучении
        других курсов и дисциплин
    >
        Доступность материалов для
        самостоятельного изучения
    >
        Применимость в реальной жизни

                                                  9
Типичные пути изучения
языков программирования
• Высокоуровневый набор                                    Источник:
      – Python/Ruby → Lisp/Haskell → Java/C#
• Путь уменьшения абстракции от машины
      – Python/Ruby → Java → C → Ассемблер
• Пути увеличения абстракции:
  > От ассемблера до самых «человечных» языков
      – Ассемблер → C → Python/Ruby
  > Смещённый в сторону высокоуровневости
      – C → Си++, Java или C# → Python/Ruby/Lisp/Haskell
  > С математическим уклоном
      – C → Java → Haskell/Mathematica
• Набор популярных языков разных видов
  > Pascal → C → Lisp/Haskell → C++/Java

         Вариантов обсуждается много и они все не бесспорны,
                 но почти всегда Java – часть цепочки.

                                                                       10
Язык программирования Java
• Мощный объектно-ориентированный язык со строгой
  типизацией
  > Удобный для обучения
• Богатые библиотеки
  > Возможность собирать сложные программы из кусочков
  > Легко создавать графические интерфейсы
• Виртуальная машина
  > позволяет абстрагироваться от особенностей операционной
    системы
  > обеспечивает хорошую производительность
• Широко применяемый

                                                              11
Средства интеграции
•
    Распространение Java приложений с помощью Веб
    >
        встраивание в Веб страницу (applet)
    >
        запуск из броузера (Webstart)
•
    JNI
    >
        связывание с внешними платформенными библиотеками
•
    JDBC
    >
        унифицированный доступ к хранилищам данных
•
    Интеграция на основе сервисов
    >
        Java RMI
    >
        CORBA
    >
        Веб сервисы

                                                            12
Средства интеграции (2)
• Исполнение в Java VM
  > Поддержка скриптовых языков:
     – Javascript, Ruby, …
  > Трансляция в Java байткод:
     – из Python, Groovy, Ada, COBOL, C, …
  > Большой список для разных языков:
    http://www.robert-tolksdorf.de/vmlanguages.html

• Бонус:
  > единая среда разработки (NetBeans) для Java,
    C/C++, PHP, Ruby, Javascript, …

                                                      13
Среда разработки NetBeans
• Полный цикл разработки
  > редактирование, сборка, тестирование, отладка,
    профилирование, ...
  > содержит все, что нужно для запуска
• Средства повышения продуктивности
  > Втроенная документация, подсветка синтаксиса,
    рефакторинг, подсказки, редактор графических интерфейсов,
    UML редактор, ,….
• Подходит для разработки различных приложений
  > от Веб-сайта или игры для мобильного телефона до
    распределенного серверного приложения
• Работает на Solaris, Linux, Windows, FreeBSD, …

                                                                14
NetBeans: открытая среда
• Открытый код
• Поддерживает не только Java
  > HTML, XML, JSF, JSP, CSS, Javascript, Ruby, C/C++
• Встраиваемые модули
  > 250+ модулей доступно на NetBeans.org
  > включая расширения для Groovy, Python, PHP, Fortran и
    других языков
• Возможность интерактивного взаимодействия во
  время совместной работы над проектом
• Платформа для создания своих программ

                                                            15
Java для обучения школьников
• Это не самый простой язык программирования, но и не
  самый сложный
• Плюсы:
  > удобная среда разработки значительно облегчает и ускоряет
    процесс обучения
  > широта платформы и библиотек позволяет выполнять более
    интересные ученикам проекты
     – игра для мобильного телефона
     – анимированный фотоальбом
     – персональная веб страничка
     – карта любимых мест на основе google maps
     – ....
• Простое начало: JavaFX Script плагин для NetBeans
                                                                16
JavaFX Script
• Декларативная нотация
  для графических
  объектов
• Оператор связывания
  данных                    var temp = 0;
                            BorderPanel {
• Статические типы            center: FlowPanel {
• Прозрачная интеграция с       content:
                                 Slider { value: bind (temp – 32)/4.5 }
  Java                        }
• Режим NetBeans: “Сразу      right: FlowPanel {
  вижу что пишу”                content: Spinner {value: bind temp}
                              }
                            }

                                                                          17
Пример: Плагин JavaFX Script
    (http://javafx.netbeans.org/)

                                    18
Java как платформа для обучения
•
    Создание систем обучения и тестирования
    >
        Sakai (http://www.sakaiproject.org/)
         –
             Пилотный проект в Петербурге: http://dl.smolny.nw.ru
    >
        OLAT (http://www.olat.org)
    >
        OpenUSS (http://openuss.sourceforge.net)
•
    Инструментарий для создания демонстраций
    >
        Open Source Physics (http://www.opensourcephysics.org)
         –
             Интерактивные учебные материалы на основе физлетов.
             Computer Tools in Education, 5'2003
•
    Реализация алгоритмов для практических занятий
    >
        Data Mining: Practical Machine Learning Tools and Techniques.
        (http://www.cs.waikato.ac.nz/~ml/weka/book.html)

                                                                        19
Открытые учебные ресурсы
•
    Курсы от Sun на русском
    >
        http://ru.sun.com/research/teachingmaterials.html
•
    Курсы на английском
    >
        Java Tutorial
    >
        Проект JEDI (открытые курсы по Java)
        (http://www.jediproject.net/)
    >
        Набор курсов от Sang Shin
        (www.javapassion.com)
    >
        множество доступных курсов в Веб
•
    NetBeans в образовательном процессе
    >
        http://edu.netbeans.org/
•
    Sun Academic Initiative
    >
        Бесплатный доступ к официальным курсам для
        образовательных учереждений
    >
        http://sun.com/academic
                                                            20
Простота администрирования
• Поддержка многих операционных систем и
  аппаратных конфигураций
• Автоматическая установка обновлений
• Дистрибутивы NetBeans
 > включают все, что нужно для разработки и запуска
   программ на Java
 > единая среда разработки для работы с несколькими
   языками программирования

                                                      21
Что важно для исследований?
• Возможность быстро создавать прототипы
  > Язык высокого уровня, среда разработки
  > Возможность переиспользовать готовые решения
• Способность решать сложные задачи
  > Гибкость/мощность языка и платформы
  > Обширный и удобный инструментарий и библиотеки
  > Производительность/масштабируемость
• Доступность окружения для коллег
  > Поддержка других платформ
  > Бесплатность
  > Простота установки и настройки

                                                     22
Java: основа для исследования
• Возможность экспериментировать с
  > расширениями языка и компиляторами
  > расширениями и оптимизациями виртуальной машины
  > …
• Примеры:
  > The java module system: core design and semantic definition. OOPSLA’2007
  > A type system for preventing data races and deadlocks in the java virtual
    machine language. SIGPLAN’ 2007
  > Interactive Back-annotation of Worst-case Execution Time Analysis for Java
    Microprocessors. RTCSA’2007
  > Automatic inference of stationary fields: a generalization of java's final fields.
    POPL’2008

                                                                                         23
Java: платформа для исследователя

 • Доступный инструментарий для:
   > моделирования, хранения и обработки данных,
      визуализации и многого другого
 • Возможность работать на высоком уровне
   абстракции
 • Примеры:
   > Java (J2ME) Front-End for Distributed Speech Recognition. AINAW’2007.
   > Aspect-oriented application-level scheduling for J2EE servers.
   > Using the Open Source Physics Java Library to do Computer Simulations.
      APS’ 2006.

                                                                              24
Пример: Open Source Physics
       (http://www.opensourcephysics.org)

Примеры и библиотеки для
обучения физике и исследований в
области физики

                                            25
Пример: Instant JChem
(на основе платформы NetBeans)

                                 26
Пример: JADE
        (http://jade.tilab.com/)

программная среда
  для разработки
 мультиагентных
      систем

                                   27
Пример: WEKA
(data mining toolkit)

                        28
Пример: NASA World Wind
              (http://worldwind.arc.nasa.gov)
Виртуальный глобус
•
  Применение в образовательном процессе:
   http://www.worldwindclassroom.com/
•
  4.6+ Тб карт

                                                29
Пример: Sun's Virtual Workplace
    (http://www.sunlabs.com/projects/mc/mpk20.html)
•
    Трехмерная среда для
    совместной работы
•
    Основана на:
     >
         Клиент: проект Wonderland
         –
             Иструментарий для создания
             трехмерных виртуальных миров
     >
         Сервер: проект Darkstar
         –
             Инструментарий для создания масштабируемых и
             надежных приложений без явного контроля паралельного
             исполнения
         –
             Оригинальная цель: инфраструктура для глобальных
             многопользовательских онлайновых игр
                                                                    30
Полезные ссылки
• http//developers.sun.ru
• http://sun.ru/research
• http://java.sun.com
• http://netbeans.org
• http://java.net
• http://ru.jfx.wikia.com

                            31
Спасибо!
Андрей Дмитриев
andrei-dmitriev@yandex.ru
http://in4mix2006.narod.ru/
2008

                              32
Вы также можете почитать