|
Тема |
Една малко по-дълга лекция. [re: Milo Minderbinder] |
|
Автор | NeverMind (Нерегистриран) | |
Публикувано | 25.08.02 19:35 |
|
|
Нека да разгледаме нещата различно. Защото някой хора бъркат технология с език за програмиране и обратно.
Значи Java vs. C#
Нито Sun, нито MS откриват топлата вода. Garbage collectora го има доста отдавна и не е нова идея. Да вземем VB или Делфи или Perl. Там кой освобождава паметта. Не съм забелявал програмистите да го правят. Така, че там си има gc. И това не е нова идея. :-)
Идеята за Виртуална Машина. Да кажем, че в сегашния си вариант е на Sun. Но да кажем езика Perl е интерпретатор и той работи на много платформи. Значи има пак нещо, което осъществява анализ на кода и друго дето е системно зависимо и осъществява интерпретацията. Само, че нещата са омесени в едно. Понеже Perl е продукт с отворен код, там няма проблеми да се разпространява кода. Идеята за Виртуална Машина съществува също във VB (Visual Basic). Някой дето се е занимавал с него знае, че там може да се компилира до P код. И после това exe за да се изпълни трябва един "vb.dll". Sun отиват един ход напред дори пред VB на MS и правят виртуалната машина да работи на различни платформи.
Както виждате до тука нищо ново, никой не е измислип.
Как работи една ВМ (Виртуална Машина). В общия случай ВМ на Java мина през всички етапи. В първата си версия си беше чист интерпретатор. Интерпретираше байт кода (на .class файла). После дойде JIT (Just In Time) компилатор. Т.е. байт кода се компилира до машинно зависим код и после се изпълнява. В този случай се достига бързина на изпълнение почти като на native приложенията. Само, дето има един проблем. Доста време се губи докато се компилира байт кода до машинен код. И пак става бавно. Дори по-бързо става ако кода се интерпретира а не да се компилира и после да се изпълнява. След това от Sun измислиха HotSpot ВМ. Това вече може да се смята за тяхно нововъведение. Значи идеята на HotSpot е да се локализират местата, които се изпълняват най-често и на тези места да се прилага JIT а на местата, където се изпълняват най-малко да се прилага интерпретиране. Т.е. HotSpot е смесица между JIT и интерпретатор и се пуска едно като се прави опит да се предвиди, кое ще е по-бързо. Сега java-та има опция -server която пуска ВМ като JIT и се препоръчва за сървъри. Иначе по подразбиране си тръгва като HotSpot ВМ.
Май MS я докараха до JIT само, тях ги домърза да правят HotSpot. :-)
Друга разлика между ВМ, тази по скоро е на ниво компилатор.
MS вкарват още един слой в компилатора и това е анализатор на езика. Т.е. можеш да не ползваш С# а примерно синтаксис на Basic, Perl, Pascal и разни други такива. Също не е нова идея. MS го имат това във IE-то където можеш да пишеш скриптове на VB или JavaScript. Ама не можаха да наложат VB-то и всички ползват JavaScript. :-))
Друга разлика на ниво ВМ е сигурността. В Java има един файл където описваш правата на ВМ. Това го няма в С#. Сега пък MS и security. Аз май много искам. :-) Това до сега не съм видял някой да го ползва под Win, но под Unix (Linux) има смисъл.
Като API-та Java-та е доста напред. Тепърва C# има да догонва.
Сега да видим и технологиите .NET или J2EE.
Идеята е да се направи Distributet Computing. Тази идея е толкова стара и през толкова реализации мина, че не знам дали ще мога да ги изброя. :-)
Първо беше RPC (Remote Procedure Call) да викаш една процедура от друг компютър. Да и пращаш данните и тя да ти връща отговора. Това вървеше разбира се на *nix платформи. :-)
После големите играчи направиха CORBA, MS бяха в групата разработваща CORBA ама се отцепиха и направиха COM, DCOM и COM+. Идеята е да имаш обек и да му викаш методите от друг компютър. CORBA е независима от ОС-а и езика. Има някъв протокол, който върви по TCP и така. Не знам по какви проблеми но не се наложи. Тъкмо в това време Java-та набираше скорост и Sun изкараха RMI (Remote Method Invocation). Същата идея, само дето е фиксирано до един език. Пак след това Sun изкараха EJB същата идея в общия случай. Само дето вкарваше малко стандартни и лесни методи за писане на обекта на сървъра и клиента на другия компютър. Отново същата идея но фискирана пак само до Java.
MS някъде преди това са измислили SOAP (Simple Object Access Protocol) но го заразвят. IBM го доразвива и сега този протокол е фрее. И цялата .NET технология се крепи на SOAP.
Основните разлики са следните:
1. Работи по HTTP(S) протокола. Т.е. минава през всички proxy-та и така нататък. Аз в момента съм зад едно яко proxy и само HTTP връзки мога да правя. EJB-то минава по TCP.
2. Използва XML за описание на структурата си. EJB-то е в двоичен формат.
3. EJB то може да поддържа сесия. Т.е. имаш един обект инциализираш го и си му викаш методи и той си пази сесията. Докато SOAP няма сесия. Той е като RPC. Засилваш данните, сървъра ги обработва и после ти връща резултат, и край връзката се разпада.
4. EJB-то е работи само с Java. SOAP-а не зависи от езика. Сървъра може да бъде на един език. Клиента на друг. Те изпозлват XML over HTTP. Естествено никой не пише или не парсва XML на ръка. Има си разни инструменти и библиотеки дето вършат това за програмиста, както при EJB-тата.
Те това е за Distributet Computing
После има така наречените WWW технологии.
ASP vs JSP, Servleti
ASP + COM vs JSP + Java Beans.
За тях ме мързи да пиша. :-)
В общия случай и двете технологии са доста близки. Има основни разлики в EJB-то и SOAP-а.
Пък, който иска да ползва Java + SOAP да си дръпне има един фрее модул от Apache и е готов. Освен това на IBM WebSpehere Development Studio ги има и повечето технологии на куп EJB, SOAP, JSP, Servleti, CORBA ... и много други. Само дето не можеш да ползваш С#. :-)
Аз мисля да оставам на Java и ако трябва да ползвам SOAP със Java да ползвам нещо фрее. Както правя до сега за JSP и Servlet-и. Щото както някой каза трябва да дадеш майка си и баща си за да купиш софтуер за MS платформа пък и MS IIS като сървър постоянно спада. Според последното прочуване на неткрафт за сървърите MS IIS са на 25% от машините. На по-предното прочуване са били 32%. Добър спад от 7%, който е зает от Апаче-то. :-) Ако така продължават с тези тъпи лицензионни политики никой няма да купува MS бозите след някоя и друга година. Някой компании взеха вече да заместват даже и десктопите си с Линукс.
Ако някой пише, да ползва кирилица, иначе изобщо не чета. Боли ме главата като трябва да прочета нещо дълго на латиница.
|
| |
|
|
|