PClog 01.03.2006 micromax 2319 прочитания

Java vs .NET

Преди няколко месеца реших да се занимавам с Java малко по-сериозно. Накупих си доста книжки, намерих си удобен редактор и седнах да се уча. Малко след това пък започнахме да го учим и в университета и ми дойде точно навреме.

Млако по-късно пък си говорехме с един приятел в ICQ за дотнет. Той ми каза, че било много по-добро от Джава и да го пробвам обезтелно. Оки. Купих си книжка. Взех си Визуал Студио 2005 и започнах. Сега какви са ми впечатленията.

Засега Дот.Нета бие Джавата по доста показатели(поне за мен. Като се има в предвид краткият ми опит с 2та езика)

Както повечето от нас знаят, Джава е създадена от Сън доста годинки преди Дот.Нет Като идея е била нещо наистина революционно за времето си. Еднакъв код да се изпълнява на много платформи, стига те да разполагат с виртуална машина да го преведат. От това идва и един голям недостатък свързан с по-бавното изпълняване на програмите.

Докато четох "Да мислим на Java" направих няколко паралела между този език и PHP. Според мен PHP доста по-добре се е реализирал като език за програмиран в УЕБ. Доколкото разбирам това са искали да постигнат хората от Сън с проекта си.

Дот.Нет е измислен от Майкрософт, но е бил предложен на европейската комисия по стандартизация(дано да не бъркам за името). Това не означава, че Майкрософт държи правата за този език. При предлагането му на тази комисия той вече става стандарт и се откъсва от Майкрософт. В момента този стандарт съществува както за Майкрософт платформи, така и за Линукс. Може да го има и за други платформи. Не съм толкова запознат.

Че какво прави Майкрософт с това "чудо" и защо ми харесва повече:

Има .exe на изпълнимите файлове :) Малко, но важно за мен подобрение. Аз като начинаеш на Джава в началото се чудех как да си направя файл с подобно разширение.

Виртуалната му машина(в дот.нет не се казва точно така а беше нещо с друго име,  но за мен със същата ф-я) и компилатора му са по-добре реализирани и програмите на дот.нет вървят по-бързо отколкото на Джава.

В него абсолютно всичко е обекти(В Джава примитивните типове не са)

Реклама

Възможност за използване на няколко езика за програмиране в един проект.

Наличието на асемблита(най-общо казано това са *.dll i *.exe файловте). Всяко асембли си има номер и уникален идентификатор, който го прави различен от всяко друго асембли. Така по много елегантен начин е решен проблема с длл файловете с еднакво име. (същият този проблем е и основна причина много хора да псуват уиндоуз като бъгава). Всяка програма си ползва асембли от определена версия. Може в системата да има няколко асемблита с еднакви имена, но тъй като те са различни версии не се препокриват и не си пречат. Това кара програмите да не забиват заради грешни длл-и и прави уиндоуса по-стабилен.

 Има и други, но в момента не се сещам. Тези са нещата, които в началото ми направиха най-голямо впечатление.

Какво харсвам в Джава пък:

Все още мобилните телефони работят с Джава и ако реша да си правя някакво приложение за телефона си(който не е с Уиндоус 2003 примерно) трябва да ползвам Джава.

Все още не съм запознат как стои въпроса с дот.нет и уеб програмирането и има ли в дот.нет нещо  от сорта на аплетите в Джава. 

Тя все пак е първа. Иноватор е и трябва да и се отдаде заслуженото уважение.

В университета продължаваме с Джава и така ли иначе продължавам да се занимавам с нея.

В момента работя паралелно и с 2те среди. Да си призная везните се накланят в ползва на дот.нет заради компилатора на майкрософт на С#(както и на други езици подържащи стандарта(J#, ASP.NET...))  - Visual Studio 2005 .

Ползването на Visual Studio 2005 ми доставя по-голямо удоволствие. Хелпа му е страхотен. Малките неща улесняващи програмирането като изкачащи полета до всеки метод, скобите за големите блокове от текст....има БЕЗПЛАТНА версия(може и да е ограничена и направена само за зарибявка, но все пак е нещо).

Сега за заключение да повторя, че съм начинещ и в 2та езика и може да допуснам грешки. Ако е така няма да се разсърдя ако ги поправите. Ще се зарадвам ако допълните списъка с характеристики и да кажете кое предпочитате вие и защо.

А  и впечатленията ми от .net са придобити главно от работата ми с C#. Искам да вмъкна това, да не би да си направите извода, че не правя разлика между С# и .net

Реклама

Коментари

BULCORE
BULCORE преди 20 години и 2 месеца

само една забележка колкото да покажа че съм прочел статията

"Дот.Нет е измислен от Майкрософт, но е бил предложен на европейската комисия по стандартизация(дано да не бъркам за името). Това не означава, че Майкрософт държи правата за този език." 

Дотнет е платформа. ( Не го пиша за да се заяждам ). В тази платформа се включват компилатори за различни езици и CLR (което е същото като JVM).

Terkoto
Terkoto преди 20 години и 2 месеца
Пробвай Eclipse. Иначе това е съвсем повърхностен анализ на двете. И даже ти сравняваш Java езика и .NET платформата. Нищо за разликите в самите езици, освен че .NET приложение можеш да направиш на .exe и да му добавиш .dll без да се притесняваш за конфликти. Да се надяваме, че някой начинаещ дето се чуди с к'во да се занимавам не го прочете това че ще остане с грешни впечатления. Иначе е похвално, че си се опитал да направиш сравнение. Просто следващия път по разпитай насам натам къде какво. Ясно е едно: .NET изглежда по завършен за разлика от Java-та. Ами така ще, защото срещу ИДЕ-то дето идва с дот нет-а имаш само компилатор-а на Java. (и компилатор-а на дот нет се разпространява безплатно). А далаверата че можеш да правиш .exe-та въобще не е далавера, щото за тях пак ти трябва .NET фреймуърк-а. Същото е възможно и с Java-та, просто намери правилния инструмент. Със здраве, и без лоши чувства
Terkoto
Terkoto преди 20 години и 2 месеца
Много слабо! Бълвоч.
micromax
micromax преди 20 години и 2 месеца

Rumen тогава съм се объркал. Правя разлика, но си и признах, че съм начинаещ. Няма нищо лошо в критиките. Нали целта е да научим нещо ново.

А и за коментара на първият анонимен, започнах това сравнение без никаква предварителна подготовка. Всичко което казах е от обща култура и не съм го проверявал и повечето е прочетено от тук от там.

Виж сега знам вече нещо ново и наистина е имало смисал. Ще се радвам ако има и нови коментари

Terkoto
Terkoto преди 20 години и 2 месеца
Пич, изпаднал си в много големи заблуди. Ето ти малко инфо, та да разсееш някои от тях: ASP.NET не е език от .NET семейството, а .NET еквивалента на JSP/Servlet технологията на Java. Самите ASP.NET страници можеш да ги пишеш на C#, VB.NET, JScript.NET, IronPython, Tcl.NET, COBOL.NET, Fortran.NET и какъвто още там .NET език ти хрумне. Visual Studio .NET 2005 не е компилатор, а среда за разработка (IDE). Също както Eclipse, NetBeans, IntelliJ IDEA и т.н. са среди за разработка на Java, които ползват Ant скриптове за да компилират приложенията, VS прави nmake файлове, които подава на командните компилатори и след това гледа изхода за грешки и ти ги показва. Трите среди за Java, които ти изредих, по нищо не отстъпват по функционалност, "малки помощи за програмиста" и т.н. от VS.NET, а напротив - IntelliJ IDEA е толкова по-напред от VS, че едва ли някога MS ще я стигнат по функционалност (Eclipse и NetBeans също са напред, но са с отворен код и MS винаги могат да краднат нещо от тях и да изравнят нещата) Програмите на .NET се изпълняват по-бързо от програмите на Java, защото .NET виртуалната машина е JIT (just-in-time), което ще рече, че програмите първо се превеждат на асемблерен език за съответния микропроцесор, след което се изпълнява директно този асемблерен код на максимална скорост. Също съществува възможност програмата изцяло да се преведе на машинен език по време на инсталация в GAC. Java виртуалната машина на Sun е КОФТИ (дори МНОГО КОФТИ) реализирана, и HotSpot технологията им е пълен боклук. Сложи си JIT виртуалната машина на IBM или виртуалната машина на BEA и гледай разлика в производителността! .NET-а прави EXE-та не защото те ще могат да се изпълняват навсякъде (изпълняват се само на машини, които имат .NET runtime), а защото EXE форматът (известен още като COFF - Common Object File Format) е стандартният файлов формат за Windows, а както можеш да се сетиш M$ не са тръгнали да правят реализацията си на .NET за нещо друго от Windows (при все, че имат един Rotor, който е имплементация на .NET за FreeBSD). Самият EXE файл, в който има .NET сглобка (assembly) е доста по-раличен по структура от EXE файловете, съдържащи машинен код. От друга страна Java архивите (JAR, WAR, EAR и т.н.) са просто ZIP файлове със сменено съдържание, поради което са много по-преносими от EXE-тата на различни платформи. За Windows има програми, които могат да пакетират JAR файл в EXE. MS са стандартизирали в ECMA само и единствено IL (Intermediate Language) - езикът на виртуалната машина. Другото не е стандартизирано, което се вижда и в зле написаната класова система в .NET 1.1. Java виртуалната машина има едно голямо предимство пред IL-а на MS - тя НЕ е обектно ориентирана. IL инструкциите на .NET могат да зареждат и викат виртуални методи на класове, нещо крайно нетипично за един асемблерен език. По тази причина JVM се реализира сравнително лесно, дори и само с електроника. Sun имат микропроцесори, които изпълняват директно Java байтов код. Едно време дори се опитваха да убедят всички, че бъдещето принадлежало на тънките Java клиенти, които зареждат една мрежова JavaOS и я изпълняват на подобен микропроцесор. За щастие идеята им не просъществува дълго :) Имаше също и смарт карти с Java процесори, които също нещо поотмряха. И понеже JVM се прави лесно, то на пазара е пълно с телефони, каклулатори, часовници и не знам си какви още устройства, които поддържат Java MicroEdition с хилядите му различни профили, и има значително по-малко телефони и други преносими устройства, които разбират .NET Compact Framework (мобилната версия на .NET). Просто последните искат значително по-мощни процесори и памет, за да изпълнят IL JIT-ера. Айде, със здраве.
Terkoto
Terkoto преди 20 години и 2 месеца
Забравих само да кажа, че .NET не е измислен от Microsoft, а от Borland, като последните са били принудени да го продадат на Microsoft в много ранен етап. Също така C# и Visual Studio .NET и следващите му версии са дело на Anders Hejlsberg, главният дизайнер на любимите ни Turbo Pascal и Delphi. Приликите между .NET и Object Pascal на Delphi никак не са случайни :) Ако някога си писал на Delphi и си се чудил защо Borland чакаха чак до Dephi 2005 за да направят хубава .NET поддръжка, то отговорът е прост - в споразумението с MS, когато са им продавали .NET (или както се е казвал там преди MS да почне да го маркетира под това име) е била включена клауза, според която Borland нямало да правят RAD среди за .NET определен брой години, докато MS си маркетират Studio-то.
Terkoto
Terkoto преди 20 години и 2 месеца
Абе микромакс. Марк Твен е казал: It is better to be silent and thought a fool than to open your mouth and remove all doubt. В превод на български: По-добре е да мълчиш и да те мислят евентуално за глупак отколкото да си отвориш устата и да разсееш всички съмнения. Размислите ти за кафето срещу .минет просто са поредният резултат на неспазването на тази максима.
Terkoto
Terkoto преди 20 години и 2 месеца
Абе микромакс. Марк Твен е казал: It is better to be silent and thought a fool than to open your mouth and remove all doubt. В превод на български: По-добре е да мълчиш и да те мислят евентуално за глупак отколкото да си отвориш устата и да разсееш всички съмнения. Размислите ти за кафето срещу .минет просто са поредният резултат на неспазването на тази максима.
micromax
micromax преди 20 години и 1 месец
anonymous от кога некомпетентноста по даден въпрос те прави глупак?
maria_mir
maria_mir преди 20 години и 1 месец
Напълно излишни спорове на ..биииип.. програмисти. За какво са заяжданията като може просто да се правят коментари по темата. От къде тази злоба? Anonymous защо просто не пуснеш нова публикация по темата? С удоволствие ще я прочета.

Terkoto
Terkoto преди 20 години и 1 месец
Направи ми впечатление един от анонимните коментатори: "Java виртуалната машина има едно голямо предимство пред IL-а на MS - тя НЕ е обектно ориентирана. IL инструкциите на .NET могат да зареждат и викат виртуални методи на класове, нещо крайно нетипично за един асемблерен език. По тази причина JVM се реализира сравнително лесно, дори и само с електроника. " Не ми стана много ясно, какво имаш предвид под това, да се реализира само с електроника? Изцяло схемно решение ли?
Terkoto
Terkoto преди 20 години и 1 месец
Само един кратък съвет към micromax. Download Borland JBuilder Foundation безплатно и се наслаждавай на програмирането на Java.
micromax
micromax преди 20 години и 1 месец
На Borland съм пробвал JBuilder X,но не знам коя версия точно. Нв твърдя, че е чак толкова дървена, но редактора на майкрософт ми се струва по-добър. А и не оставайте с впечатлението, че не харесвам Java. В университета програмиране главно на нея и я намирам за много приятна за писане.
Terkoto
Terkoto преди 19 години и 5 месеца
А бе много програмисти се навъдиха в коментара по темата. Вместо да уважавате желанието на човека да сподели радостта си от това което е научил и желанието му да го сподели с вас вие само се правите на дървени философи. Какво само се заяждате. Мястото ви не е тук а в някоя мрачна семинарна зала да слушате по цял ден философски беседи. Искате ли да ви кажа нещо?!! Когато си купих книгата на Марко Канту (носител на наградата Spirit of Delphi, виден програмист и автор на множество книги и публикации, понастоящем преподавател в университет в Италия) - Мastering Delphi. Нито бях чувал за ООП нито за това каква е разликата между IDE и COMPILER. Но това не ми пречеше да пиша сносни приложения на този език. Днешните езици от високо ниво съчетани с добра литература ви дават възможност да си пишете готини програмки дори и да не знаете терминологията към съответния езис или ИДЕ. Поощрете човека че се е потрудил! Да това от моя страна си е заяждане с хората които не поущряват чуждия труд. Тези хора са прочели там нещо си и се мислят за много вещи в Джава областта и се надуват - а в същото време са неграмотни в други области на информатиката (в това число и аз). Но не е това начина не ПЛЮЙТЕ човека а му ОБЯСНЕТЕ. Анадъмно!