Трансляция кода из Groovy в Java в Intellij idea




Скачать 312.68 Kb.
НазваниеТрансляция кода из Groovy в Java в Intellij idea
страница1/6
Дата03.10.2012
Размер312.68 Kb.
ТипДипломная работа
  1   2   3   4   5   6
Санкт-Петербургский Государственный Университет

Математико-механический факультет


Кафедра системного программирования


Трансляция кода из Groovy в Java
в IntelliJ IDEA



Дипломная работа студента 545 группы
Медведева Максима Юрьевича


Научный руководитель ……………… П. А. Громов

/ подпись /


Рецензент ……………… ст. преподаватель

/ подпись / В. С. Полозов


“Допустить к защите” ……………… д.ф.-м.н., профессор

заведующий кафедрой / подпись / А.Н. Терехов


Санкт-Петербург

2011


Saint-Petersburg State University

Faculty of Mathematics and Mechanics


System engineering department


Translating Groovy code into Java in IntelliJ IDEA


Graduate paper

Medvedev Maxim

gr. 545


Scientific advisor ……………… P. A. Gromov

/ signature /


Reviewer ……………… Seniour Lecturer

/ signature / V. S. Polozov


“Admitted to proof” ……………… Doctor of sciences,

Head of the chair, / signature / professor

A.N. Terehov


Saint-Petersburg

2011

Оглавление


Оглавление 3

Введение 6

Постановка задачи 7

Обзор существующих подходов 9

Выбор решения 11

Особенности синтаксиса Groovy 13

Скрипты 13

Перегрузка операторов 13

Встроенный синтаксис для интервалов 14

Строковые литералы 14

Ссылки 15

Анонимные функции 16

Параметры методов и замыканий 17

Элвис-оператор 18

Безопасное приведение типов 18

PSI-дерево 18

Реализация 19

Транслятор выражений 20

Контекст генерации 21

Поиск метода в классе 22

Трансляция вызова метода 22

Трансляция бинарных операторов 23

Трансляция унарных операторов 23

Трансляция операторов instanceof 24

Трансляция встроенных списков 24

Трансляция встроенных ассоциативных массивов 25

Трансляция встроенных интервалов 25

Трансляция обращений к массиву 25

Трансляция условного выражения 26

Трансляция элвис-оператора 27

Трансляция строковых литералов 27

Трансляция ссылок 27

Трансляция безопасных приведений типа 28

Трансляция ссылок this и super 29

Трансляция оператора new 29

Трансляция оператора присваивания 30

Трансляция анонимных функций 31

Транслятор блоков 32

Трансляция простых конструкций 32

Трансляция выражений 33

Трансляция оператора if 33

Трансляция цикла for 33

Трансляция цикла while 33

Трансляция switch 34

Трансляция определения переменных 34

Транслятор классов 34

Транслятор членов класса 35

Трансляция методов и конструкторов 35

Трансляция полей 35

Трансляция констант перечислений 36

Заключение 37

Список литератруры 38

Приложение 1. Перегрузка операторов 41



Введение


За последние несколько лет на платформе Java появилось довольно много новых языков. Это Scala [10], Clojure [11], Groovy [12], Jruby [13] и Jython [14]– портированные версии Ruby и Python. Все они появились как альтернатива языку Java. Такое бурное развитие языков происходит из-за того, что Java развивается довольно медленно.

Groovy – это объектно-ориентированный динамически типизирован-ный язык. Он поддерживает анонимные функции, встроенный синтаксис для списков, ассоциативных массивов, регулярных выражений.

frame1

Разработчикам Groovy удалось достичь полной совместимости кода, написанного на Groovy и Java. Это позволяет наследовать Groovy-классы в Java и наоборот, использовать в Java любые библиотеки, классы и скрипты, написанные на Groovy, а классы и библиотек, написанные на Java – в Groovy. При этом сохраняются все преимущества каждого из языков.

IntelliJ IDEA[17] поддерживает Groovy. Для него реализован полный спектр возможностей – подсветка синтаксиса, обнаружение ошибок на лету, рефакторинги, инспекции, предложения (intentions). Реализованы вывод типов и разрешение ссылок.

Методы, написанные на Groovy, можно использовать в Java и наоборот. Поэтому для этих языков реализованы кроссъязыковые рефакторинги «Добавление параметра» (Introduce Parameter)[15] и «Изменение сигнатуры метода» (Change Signature)[16]. Первый позволяет заменить любое выделенное выражение в теле метода на новый параметр, который будет добавлен во все вызовы этого метода и в Groovy, и в Java. «Изменение сигнатуры метода» позволяет полностью изменить сигнатуру: название метода, тип возвращаемого значения, список параметров и исключений. Для новых параметров необходимо указать инициализатор. Чтобы корректно подставлять инициализаторы в разные языки, необходимо уметь транслировать выражения с одного языка в другой. До последнего времени инициализаторы подставлялись как есть, без конвертации. При подстановке в Groovy инициализаторов, написанных на Java, это не очень важно из-за того, что синтаксис Groovy практически полностью расширяет синтаксис Java. Но при при подстановке в Java Groovy-инициализаторов чаще всего получается некомпилируемый код.

Также существует потребность в трансляции целых классов из Groovy в Java. Одной из причин является низкая производительность Groovy. В среднем он работает от 5 до 10 раз медленее, чем Java [1]. Поэтому часто критические части уже написанного Groovy-кода приходится переписывать на Java. Второй причиной можно назвать сложность поддержки существующего кода. Отсутствие необходимости явно указывать типы может привести к тому, что через некоторое время код, написанный в такой манере, станет совершенно неинформативным.
  1   2   3   4   5   6

Похожие:

Трансляция кода из Groovy в Java в Intellij idea iconОбщие представления о языке Java 6
Виртуальная Java-машина, байт-код, jit-компиляция. Категории программ, написанных на языке Java 9
Трансляция кода из Groovy в Java в Intellij idea iconПособие для работников по адвокации и социальной справедливости Technical Idea: Iman Mandour & Nader Tadros; Artistic Idea: Golo

Трансляция кода из Groovy в Java в Intellij idea iconМинистерство образования и науки российской федерации
Информационные процессы в клетке: репликация, транскрипция, трансляция, (репарация, сплайсинг). Генетический код. Классические опыты...
Трансляция кода из Groovy в Java в Intellij idea iconВ. В. Кулямин Лекция Язык программирования Java и технологии Java
После разработки архитектуры можно переходить к разработке отдельных компонентов будущей системы
Трансляция кода из Groovy в Java в Intellij idea icon“Кодирующее устройство для кода Файра ”
Цель курсовой работы: Построить математическую модель заданного корректирующего кода, найти образующую матрицу кода, технически реализовать...
Трансляция кода из Groovy в Java в Intellij idea iconJava. В частности, с помощью Java программисты создают Web-приложения, назы­ваемые атлетами
Отображение с помощью аплета отрывка, случайным образом выбранного из текстового файла
Трансляция кода из Groovy в Java в Intellij idea iconЛабораторная работа Трансляция стандартов организации в функциональные модели 5
Трансляция стандартов организации в функциональные модели: Методические указания к лабораторной работе по дисциплине «Системы управления...
Трансляция кода из Groovy в Java в Intellij idea iconМобильных телефонов на c++ и java 2 me м осква, 2005 удк 004. 438
Г26 Symbian os. Программирование мобильных телефонов на C++ и Java 2 me. — М: дмк пресс, 2005. 448 с: ил
Трансляция кода из Groovy в Java в Intellij idea iconПрограмма по курсу: современные технологии программирования на языке
Данный курс предполагает базовое знание языка java. Курс рассчитан на изучение не самого языка, а технологии программирования на...
Трансляция кода из Groovy в Java в Intellij idea iconКашина о. А., Андрианова а. А. Практикум по программированию на языке java удк 004. 43
Практикум по программированию на языке Java.: Учебное пособие/ О. В. Пинягина, О. А. Кашина, А. А. Андрианова – Казань: Казанский...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница