.net и Java

Тема в разделе ".NET", создана пользователем NikSoft, 31 май 2006.

Статус темы:
Закрыта.
  1. NikSoft

    NikSoft Гость

    Victor Gr поднял вопрос о преимуществах и недостатках двух платформ .NET и Java. За неимением времени приведем схематично несколько доводов по этой теме.
    Victor Gr утверждает, что Java обеспечивает “Очень мощною поддержку ООП”. Java не является 100% обьектно-ориентированным языком в отличии от C#, так как встроенные типы(int, real и т.д.) не являются классами. Базовый класс всех типов в языке C# “Object” класс.
    Victor Gr утверждает, что Java обеспечивает принцип “Написано однажды-работает везде”. Этот принцип верен только для тех машин, на которых установлена JVM. Таким образом в действительности это принцип - фикция.
    JVM является интерпритатором, то есть работает медленнее CLR, которая имеет JTC компилятор.
    Отметим кризис в компании Sun Microsystems, что выражается в смене руководства и падением уровня продаж рабочих станций и серверов.
    Visual Studio 2005 содержит инсрументы для работы с .NET, которые позволяют решать вашу проблему быстрее и эффективнее, чем использование любого другого инструмента для Java. Это означает для компании уменьшение срока разработки проекта и экономии финансовых средств. Как следствие все больше компаний будет переходить на .NET технологию.
    Отметим, что один из самых посещаемых сайтов MySpace.com был разработан с помощью ASP.NET 2.0.
    Через шесть месяцев выйдет Windows Vista и Long Horn. Они будут включать C# 3.0, Atlas(AJAX технология), XAML, новое API Avalon для программирования Windows, новую коммуникациооную платформу Indigo.
    C# 3.0 включает механизм запросов LINQ, DLINQ, XLINQ, что впервые позволило работать с базами данных, XML унифицированным образом средствами только языка C#.
    Atlas является стандартом для разработки AJAX проектов. Включает открытую, богатую библиотеку контроллеров, средства работы с XML Web сервисами, Script#(дает возможность работать с Java Script на уровне ООП, включая поддержку Intelly Sense).
    Происходит встраивание CLR в такие продукты как SQL Server 2005, IE 7.0, что еще больше повышает эффективность работы .NET. Так, например, можно писать процедуры для SQL Server 2005 на уровне C#, используя богатую библиотеку классов платформы .NET.
    Новый программный API Avalon призван дополнить существующий Win32 API для Windows. Так как Avalon – это библиотека классов(а не функций Win32 API), то можно программировать Windows на уровне классов, то есть на уровне ООП. Учитывая тот факт, что Intel, AMD компании начали производство 64-битовых процессоров, а производство процессоров Sun Microsystems падает, все больше компаний будет использовать 64-битовые персоналки с Windows, а значит с .NET. Встает вопрос как Java будет работ с API Avalon?
    Один из авторитетов в области Java программирования Bruce Tate опубликовал книгу “ Beyond Java”(ISBN 0-596-10094-9). На 200 страницах приводятся аргументы, что Java технология себя изжила. Ее кризис не является техническим вопросом, а вопросом времени. Автором книги высказывается гипотеза-какой язык придет на смену Java: быть может функциональный язык Ruby.
    Но как отметил Gosling Ruby не обладает масштабируемостью.
    Из сказанного видно, что следующее десятилетие будет за .NET платформой. Что придет ей на смену? Может быть аспектно-ориентированное программировиние? Может быть интенциональное программировиние, развиваемое создателем MS Word и венгерской натации Charles Simonyi ?
    Может быть декларатированное программировиние, когда мы только описываем задачу, а компьютер находит подходящее решение? Может быть компьтерная наука достигнет высот, когда можно будет применять автоматическое доказательство теорем на промышленном уровне? Поживем – увидим.
     
  2. mr_ST

    mr_ST Гость

    Не флейма ради, но истины для :)

    Не совсем так. На сколько я знаю уже давно есть реализации с джиттингом. Ключевое слово Hotspot. А кто такой JTC?

    С переносимость у Java пока получше, но это дело времени. Надеюсь Novell не бросит Mono и .NET будет на многих платформах. Он как бы и сейчас есть, но по мне сыроват.

    Vista и LongHorn это одно и тоже. Вернее Longhorn это codename для Vista.
    API Avalon это codename для Windows Presentation Foundation (WPF), Indigo codename для Windows Communication Foundation (WCF). Возможно WinFX и включат, а вот насчет C# 3.0 я сомневаюсь.

    Он не является стандартом. Это свего лишь еще одна из библиотек реализующая принцип AJAX, только интегрирована с ASP.NET

    1) Avalon он же WPF это всего лишь библиотека для создания UI. Сомневаюсь что это является ключевым моментом для Java :)
    2) Основной нишей для Java были есть и наверное будут серверные приложения
    3) Также Java активно занимается IBM
     
  3. Pete

    Pete Гость

    2NikSoft
    Мда... врать не честно :)


    >Victor Gr утверждает, что Java обеспечивает “Очень мощною поддержку ООП”. Java не является 100% обьектно-ориентированным языком в отличии от C#, так как встроенные типы(int, real и т.д.) не являются классами. Базовый класс всех типов в языке C# “Object” класс.

    Никто не мешает использовать обертки типа Integer, Double, примитивные типы были введены для performance critical приложений. 100% ООП в вашей программе, это ваш выбор, Java вас не ограничивает в нем.

    >Victor Gr утверждает, что Java обеспечивает принцип “Написано однажды-работает везде”. Этот принцип верен только для тех машин, на которых установлена JVM. Таким образом в действительности это принцип - фикция.

    Что мешает поставлять свой продукт с JVM?

    JVM является интерпритатором, то есть работает медленнее CLR, которая имеет JTC компилятор.

    Про Hotspot вам уже ответили, байткод транслируется в команды процессора, применяются различные оптимизации, причем динамические (т.е. в процессе выполнения собирается статистика и на ее основе код может быть оптимизирован)

    >Отметим кризис в компании Sun Microsystems, что выражается в смене руководства и падением уровня продаж рабочих станций и серверов.

    Java мало зависит от Sun, есть много других крупных компаний (IBM, BEA, Oracle), которые вносят куда более значительный вклад в развитие. За Sun просто всегда остается последнее слово (как было с JDO).

    >Visual Studio 2005 содержит инсрументы для работы с .NET, которые позволяют решать вашу проблему быстрее и эффективнее, чем использование любого другого инструмента для Java. Это означает для компании уменьшение срока разработки проекта и экономии финансовых средств. Как следствие все больше компаний будет переходить на .NET технологию.

    Сколько вы инструментов видели для Java? Я работал с JBuilder, Eclipse, JDeveloper сейчас на IDEA, продукт той самой компании JetBrains чей Resharper так обожают дотнетчики, а это всего лишь порт c Java на .Net. Рефакторинг в IDEA пожалуй самый лучший из всех IDE для Java.

    >Отметим, что один из самых посещаемых сайтов MySpace.com был разработан с помощью ASP.NET 2.0.

    Отметим, что один из самых посещаемых сайтов E-Bay, написан на Java c использованием технологии J2EE.

    Через шесть месяцев выйдет Windows Vista и Long Horn. Они будут включать C# 3.0, Atlas(AJAX технология), XAML, новое API Avalon для программирования Windows, новую коммуникациооную платформу Indigo.

    AJAX технологии уже используются во фреймворках типа JSF (аналог ASP .Net). В Java также включена поддержка скриптовых языков.

    >C# 3.0 включает механизм запросов LINQ, DLINQ, XLINQ, что впервые позволило работать с базами данных, XML унифицированным образом средствами только языка C#.

    а в Java JDOQL есть

    [skipped]

    Учитывая тот факт, что Intel, AMD компании начали производство 64-битовых процессоров, а производство процессоров Sun Microsystems падает, все больше компаний будет использовать 64-битовые персоналки с Windows, а значит с .NET. Встает вопрос как Java будет работ с API Avalon?

    Java уже работает на 64-битной платформе AMD (в Linux и Win), причем тут сервера Sun, я не понял, что-то не нашел причинно следственной связи между 64-битными процессорами и Windows :)

    >Один из авторитетов в области Java программирования Bruce Tate опубликовал книгу “ Beyond Java”(ISBN 0-596-10094-9). На 200 страницах приводятся аргументы, что Java технология себя изжила. Ее кризис не является техническим вопросом, а вопросом времени. Автором книги высказывается гипотеза-какой язык придет на смену Java: быть может функциональный язык Ruby.

    Читал, многое спорно в динамически типизируемых языках и в данной книге. Java не единственный возможный язык JVM. Уже есть проекты по портированию Ruby для работы с JVM.

    >Но как отметил Gosling Ruby не обладает масштабируемостью.
    Из сказанного видно, что следующее десятилетие будет за .NET платформой. Что придет ей на смену? Может быть аспектно-ориентированное программировиние? Может быть интенциональное программировиние, развиваемое создателем MS Word и венгерской натации Charles Simonyi ?

    Вы не в курсе что AOP уже существует как в Java так и .Net? Почитайте про AspectJ, Spring AOP.

    >Может быть декларатированное программировиние, когда мы только описываем задачу, а компьютер находит подходящее решение? Может быть компьтерная наука достигнет высот, когда можно будет применять автоматическое доказательство теорем на промышленном уровне? Поживем – увидим.

    Не вижу ограничений Java здесь и преимуществ .Net. На Java сравнительно тяжело писать простые вещи, а вот сложные самый раз.
     
  4. mr_ST

    mr_ST Гость

    2Pete

    Всетаки в .NET работа с value типами сделана более красиво. Они формально являются наследниками object (хотя если заглянуть в потроха это не совсем так, ну да это нюансы). При этом по скорости они так же хороши как примитивы в Java. Правда в некотрых случаях за гибкость приходится платить boxing-ом и уменьшением производительности поэтому нужно быть аккуратным и понимать что делаешь.

    Как будет выглядеть след. код на Java?

    Код (Text):
    Arraylist arr = new Arraylist();
    a.Add(123);
    a.Add(123.0);
    a.Add(DateTime.Now);
    a.Add("just string");
    foreach(object o in arr)
    {
    Console.WriteLine(o.ToString());
    }
    Второй бенефит .NET это многоязычность, при чем cross language взаимодействие хоть и с некоторыми оговорками но вполне себе работает. Уже реализована куча различгых языков. Тот же Nemerle от которого прется половина rsdn-а <_<

    PS Я слабо знаком с Java посему поправте если где не прав
     
  5. Pete

    Pete Гость

    ArrayList arr = new ArrayList();
    arr.add(123); // раньше было arr.add(new Integer(123));
    arr.add(123.0);
    //a.Add(DateTime.Now); сорри, нет рядом jdk ))
    arr.add("just string");
    for(Object o : arr)
    {
    System.out.println(o.toString());
    }

    Вообще боксинг спорная фича, я про какие-то нетривиальны проблемы слышал могут быть.

    Кстати примитивные типы, весьма хитры можно написать например так int.class и получить класс (эквивалентный Integer.TYPE).

    Многоязычность поддерживается на уровне JVM, т.е. язык Java не единственно возможный для написания программы, но я честно говоря не в курсе, есть ли другие языки и компиляторы в байткод JVM.

    Я не говорю, что язык .Net полный отстой, просто он лично мне не подходит по духу. А то, что в нем есть какие-то фичи типа yield, delegates меня совершенно не беспокоит. Первые для дебага сложны, а вторые успешно реализуются другими средствами Java (на javalobby полно примеров).
     
  6. Gisma

    Gisma Гость

    может сразу во флейм?<_<
     
  7. mr_ST

    mr_ST Гость

    Пока не подтянулись фанаты с какашками запазухой, думаю, не стоит <_<
     
  8. Gisma

    Gisma Гость

    а они будут<_<
     
  9. mr_ST

    mr_ST Гость

    Похоже что в Java примитивы ведут себя очень практически как value типы в .NET

    .NET нужно воспринимать как платформу.

    Видишь ли, комфорт это такая штука которая состоит из мелочей. ;) Те же делегаты весьма удобная штука.

    Да нет, там все тривиально, просто у новичков которые не знают что это такое, результат выполнения следующего код, например, ставит в тупик :(

    Код (Text):
    int a = 1;
    obect o1 = a;
    object o2 = a;

    Console.WriteLine(object.RefernceEquals(o1, o2).ToString());
    Будет напечатано False. Кстати, хороший вопрос для собеседования ;)

    А еще у вас негров линчуют дженериков нету. <_< Или появились уже?
     
  10. Pete

    Pete Гость

    >.NET нужно воспринимать как платформу.

    да, это загнул конечно <_< mea culpa

    Скажем так, мне просто не подходит философия .Net и зависимость его развития от MS, ну это типа как мир Linux и Windows :( Но о вкусах не спорят ;)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей