Министерство образования и науки УкраиныДонецкий национальный технический университетМАГИСТЕРСКАЯ ДИССЕРТАЦИЯТема: "Сравнительный анализ эффективности различных классов программных продуктов для платформ Java и .NET"Руководитель: доцент, к.т.н. Аноприенко А.Я.
Проблема выбора аппаратной платформы, языка программирования, и среды исполнения всегда оставалась одной из основных проблем разработчика программного продукта. В данной работе рассматриваются программные платформы Java и .NET, являющиеся конкурирующими платформами для кроссплатформенной разработки приложений различных типов. Основная идея программных платформ заключается в компиляции исходного программного кода на языке высокого уровня в некоторый промежуточный код, который, после просмотра специализированным программным модулем, адаптированным под конкретную аппаратную платформу (виртуальной машиной), преобразуется в машинный код. Поскольку платформы Java и .NET являются сходными платформами, выбор Java или .NET для разработки конкретного приложения является проблемой для архитекторов и разработчиков ПО, т.е. обе платформы нуждаются в сравнительных оценках производительности, определяющих ту или иную платформу как более эффективную для разработки конкретного приложения. В работе рассмотрены преимущества и недостатки некоторых подсистем Java и .NET, а также возможные пути решения рассмотренных проблем. Целью работы является исследование производительности виртуальной машины и подсистемы сериализации Java и .NET с целью выбора наиболее эффективной платформы для разработки конкретных приложений Методом исследования программных платформ является эксперимент, а также анализ исходных кодов программных платформ. Научная новизна работы состоит в получении численных характеристик, описывающие процессы, происходящие внутри среды исполнения Java и .NET, а также предложение по оптимизации некоторых подсистем .NET. Практическая ценность состоит в реализации алгоритма сохранения табличных данных в поток, являющегося оптимальнее с позиции размера сохраняемых данных, чем алгоритм сериализации .NET. Одними из современных технологий быстрой разработки распределённых систем широкого пользования (приложений электронной коммерции и различных web-порталов) являются программная платформа и язык Java, а также альтернативная ей платформа Microsoft.NET. По сравнению со средствами разработки, ориентированными на одну платформу (например, Visual Basic), Java и .NET являются кроссплатформенными, что позволяет архитектору распределённой системы более гибко выбирать аппаратное обеспечение и операционную систему компонентов распределённой системы в зависимости от их производительности, стоимости и надёжности. Одной из исследуемых подсистем данных программных платформ является подсистема сериализации. Точно так же, как производительность персонального компьютера определяется не только его компонентами, но и производительностью его системной шины, так и производительность распределённой системы определяется эффективной передачей данных между её компонентами (в данном случае, между клиентом и сервером). Задачей подсистемы сериализации в распределённой система является представление любых структурных данных в виде последовательности байт с целью дальнейшего использования данной структуры другим процессом (либо серверным, либо клиентским). Очевидно, что эффективность обмена данными между компонентами распределённой системы определяется как временем, затрачиваемым на сохранение структуры данных в поток байт, так и размером данных. При постоянной пропускной способности канала данных время, затрачиваемое на пересылку данных, зависит именно от размера данных. Презентация сравнения размера служебных данных в Java и .NET: В магистерской работе проведено исследование некоторых основных подсистем программных платформ и определены численные зависимости, позволяющие судить об эффективности применения той или иной платформы для построения того или иного приложения. Перспективами являются дальнейшее расширение исследования с целью исследования других особенностей равно как программных платформ, так и сопровождающих разработку приложения: |