Delphi.NET, або Borland знову з Microsoft, Різне, Програмування, статті

Нові версії основних засобів розробки Borland будуть повністю підтримувати Microsoft. NET Framework.


Представляючи миру в лютому 2002 р. нову стратегію Borland з підтримки Microsoft .NET, Саймон Торнхілл, генеральний менеджер корпорації за рішеннями RAD, заявив: “Довгий час ми серйозно підтримували платформу Microsoft. Але у зв’язку зі зростаючою популярністю Java і виходом на перші місця ОС Linux ситуація на ринку змінилася, тому ми змушені були перейти на ці платформи. Однак у даний момент Microsoft знову повертає собі колишні позиції, починаючи нову історію під назвою. NET “.


Що ж являє собою нова стратегія Borland і навіщо вона потрібна? В цьому ми і спробуємо сьогодні розібратися, але перш ніж відповідати на ці питання, повернемося до самої середовищі Microsoft. NET Framework.


13 лютого 2002 корпорація Microsoft офіційно оголосила про вихід нової операційної середовища. NET Framework і середовища розробки додатків Visual Studio. NET. Ці продукти являють собою основні фрагменти архітектури Microsoft. NET.


Поки сам по собі перехід на архітектуру. NET не означає модифікації або появи нової версії Windows. Це нова, ще не зовсім самостійна платформа, яка не замінює собою ні Windows, ні механізми COM, а існує паралельно ім.


Втім, Borland, за словами Торнхілла, вважає. NET самостійної платформою, окремої від Windows. “Ми розглядаємо це як еволюцію від Windows к. NET, і найближчим часом людям будуть потрібні як. NET-додатки, так і додатки для Windows. З часом. NET, можливо, витіснить Windows, але поки потрібні і ті й інші програми “.


Центральний елемент архітектури. NET – середа виконання і розробки додатків. NET Framework, що представляє собою надбудову над ОС Windows. Це означає, що на відміну від звичайних Windows-додатків, які безпосередньо взаємодіяли з Win API, COM і т. д., додатки. NET взаємодіють із середовищем Windows через функціональні елементи. NET Framework.


Програми. NET реалізуються у вигляді проміжного коду мовою Microsoft Intermediate Language (MSIL). Потім цей код виконується в середовищі Common Language Runtime (CLR) шляхом попередньої компіляції окремих фрагментів програми або цілого додатка.


Середа CLR – це, по суті, середа безпечного виконання програм, що використовує механізм “керованого коду” – Managed Code. Завдяки керованого коду виконавча середа автоматично управляє створенням, використанням, захистом і очищенням пам’яті, доступної додатком.


Крім мов програмування, пропонованих Microsoft в рамках VS.NET (VB.NET, C #, C + +), вже сьогодні деякі мови програмування високого рівня від незалежних розробників (Perl, Cobol, FORTRAN, Smalltalk, Eifell і т.д.) передбачають можливість створення. NET-додатків, тобто компіляцію вихідного тексту програми в байт-код MSIL.


Природно, Borland не могла не звернути уваги на створення нової платформи, нової операційної середовища, і 12 лютого 2002 р. (що примітно, за день до офіційного початку поставок. NET Framework і VS.NET) вийшов прес-реліз Borland, в якому повідомлялося, що компанія збирається випустити в другій половині цього року версії своїх основних засобів розробки з повною підтримкою. NET Framework.


Як саме буде реалізована ця підтримка? Перш за все в новій стратегії Borland необхідно виділити такі важливі складові, як орієнтація на використання XML Web-сервісів і на компіляцію програм в керований MSIL-код.


На сьогоднішній день всі засоби розробки Borland, включаючи Delphi, JBuilder (і Web Services Kit для Java), C + + Builder і Kylix, вже дозволяють розробляти програми Web-сервісів, що працюють в. NET. Повна розробка. NET-додатків з керованим кодом буде реалізована в лінійці RAD-засобів Borland (Delphi і C + +) починаючи з другої половини 2002 р.


Що ж стосується другої частини підтримки. NET, то протягом майже двох місяців з моменту оголошення нової стратегії Borland вперто зберігала мовчання, припиняючи усілякі чутки про новий продукт. Навіть про перший показі Delphi.NET на конференції Microsoft TechEd в квітні в прес-релізі було лише кілька рядків. Нарешті 6 травня на сайті Borland Community (http://community.borland.com) з’явилася стаття про демонстрації Delphi.NET на SD West, де основні продукти Borland – Delphi 6, Kylix 2 і JBuilder 6 – отримали досить престижні нагороди Jolt Award, а сама корпорація була занесена в Jolt Hall of Fame. Насправді демонструвався ще не сам пакет Delphi.NET, а його попередня демо-версія. Офіційних коментарів і подробиць знову-таки не було. Так воно, загалом, і зрозуміло: розробники не хотіли нічого пояснювати до щорічної конференції Borland.


Проте наведений у статті “знімок” з екрану нового Delphi викликав масу чуток і суперечок. Не чекаючи BorCon і офіційних подробиць, багато шанувальників Borland почали активно вишукувати гідності і недоліки прийдешнього продукту і будувати гіпотези про його працездатності.


Як би там не було, але на конференції BorCon, що проходила з 18 по 22 травня в Анахаймі, нарешті були розкриті досить багато технічні подробиці нового продукту, та й не тільки його. Що стосується підтримки . NET, то на конференції багато уваги було приділено новій версії Delphi для. NET – даний проект був представлений під кодовим ім’ям Aurora. Крім того, було показано щось абсолютно нове, ніде раніше не згадується, – мова для написання сценаріїв і розробки Web-сервісів під кодовою назвою Charlotte. Отже, по порядку.


Нова версія Delphi для Windows


Сьому версію Delphi не можна вважати повноцінним інструментом Delphi.NET. В цілому це буде просто чергова версія продукту, що містить якісь нововведення і поліпшення. Однак крім інших нововведень в даній версії є і дещо для. NET. Зокрема, компілятор буде видавати попередження про несумісність окремих фрагментів коду с. NET, точніше, про неможливість використання тих чи інших конструкцій, класів і т. д. в разі компіляції програми в. NET. І, нарешті, в поставку Delphi 7 буде включена якась попередня preview-версія Delphi для. NET.


Перш ніж говорити про підтримку. NET, перерахуємо ті нові можливості, які з’являться в звичайній версії Delphi 7 для Windows:



Тег в даному випадку містить ім’я і необов’язкові аргументи. Тег і його аргументи пересилаються в відкомпільований файл. Компілятор і runtime-бібліотека можуть вибирати ці теги і проводити з ними якісь дії. Можна оголосити власні теги, оголосивши клас, предком якого є TCustomAttribute.


Наприклад, тег GUID як параметр має рядковий аргумент, що визначає сам цей GUID:






 TSomething = class(TInterfacedObject, ISomething)
[GUID(….)]

end;


А тепер розглянемо компоненти Delphi для. NET, включені в попередню версію.


Компілятор Delphi для. NET в IL


Цей компілятор вже написаний і успішно працює, що і було продемонстровано на конференції. На одній із сесій глядачам була показана IDE Delphi 7 (це можна було визначити по рядку заголовка в головному вікні). Створений в цьому середовищі проект був скомпільований в додаток. NET Windows Forms – використовувався компілятор командного рядка DCCIL. Зібране таким чином додаток виконується не тільки в середовищі Windows с. NET, але і на пристроях типу Tablet PC, що підтримують. NET. За свідченнями очевидців, виконання Delphi-програми на Pocket PC було дуже вражаючим видовищем.


Взагалі розробники Borland обіцяють, що додатки Delphi.NET будуть виконуватися на всіх платформах, що підтримують. NET. Однак не виключено, що при перенесенні на деякі апаратні платформи знадобляться серйозні зміни в кодах саме. NET-додатки. Одна з можливих проблем полягає в тому, що такі пристрої, як мобільні телефони і PDA, мають на увазі ряд обмежень, пов’язаних, наприклад, з дозволом екрану. У повній версії Delphi. NET Borland припускає підтримувати Compact Framework для. NET – тобто середовище. NET для переносите пристроїв, яка дуже нагадує стандартну середу. NET, однак має і ряд суттєвих відмінностей.


VCL для. NET Component Framework


Бібліотека VCL для. NET буде містити такі групи компонентів:



Тут необхідно сказати про ті труднощі, які виникли при перенесенні на платформу. NET візуальних компонентів. В принципі, бібліотеки класів Delphi і. NET дуже схожі, а отже, багато елементів в них легкосопоставіми, як, наприклад, класи TObject і System.Object.


Однак саме VCL представляє собою окрему область бібліотеки класів Delphi, що викликає ряд серйозних проблем при перенесенні в. NET – це, зокрема, стосується використання таких класів, як TButton, TForm і т. п. Основна причина складнощів – відсутність в. NET еквівалента для класу TGraphicControl. Проектуючи VCL, Borland навмисно вирішила позначити відмінності між елементами управління, які вимагають дескрипторів (handles), і обходяться без них. Очевидно, це зроблено тому, що дескриптори – “дорогий” ресурс, і чим менше ми їх використовуємо, тим краще.


В. NET такої відмінності немає, тому все реалізовані в цьому середовищі графічні елементи управління взаємодіють з середовищем через дескриптори.


Розробники з Borland запропонували цікаве рішення проблеми. В.NET Framework є область, аналогічна VCL. Цей простір імен Windows.Forms – дуже спеціалізована частина бібліотеки. NET, що має доступ до незахищеного коду (наприклад, до драйверів графічних плат або прямим викликам Win32 API). Проте ця частина бібліотеки. NET гарантовано безпечна, навіть якщо всередині вона використовує незахищений код. Windows.Forms сильно відрізняється від всіх інших просторів імен, які не були розраховані на звернення до незахищених модулям. Розробники Borland вирішили піти аналогічним шляхом і в основному перебудували VCL, створивши абсолютно новий простір імен, назване, відповідно, Borland. Фактично відбулося відображення VCL на модель простору імен Windows.Forms. Це призвело до того, що тепер в компонентах цієї частини бібліотеки використовуються прямі виклики Win32 API, що згідно концепції. NET гарантує захищеність коду додатків.


Позитивна сторона такого рішення полягає в тому, що з’явилася можливість легко перекомпілювати програми та перенести існуючий код, крім тих випадків, коли використовується низькорівневе програмування з безпосереднім зверненням до “заліза”. Вихідні додатки будуть повністю відповідати стандартам. NET. Недолік ж рішення полягає в тому, що вихідна додаток повинен буде поставлятися разом із збіркою Borland (це приблизно те ж саме, що і збірка Delphi-програми із засобами підтримки етапу виконання).


Таким чином, з’являється два варіанти створення додатків, аналогічно ситуації з Visual CLX. Якщо ви починаєте з нуля програма, яка буде працювати тільки в. NET, то, швидше за все, ви будете використовувати простір імен Windows.Forms. В іншому випадку при портуванні в формат Win32 або з нього доведеться використовувати збірку Borland.


Розібравшись з основними особливостями попередньої версії, ми можемо нарешті перейти до версії Delphi для. NET, що має кодове ім’я Galileo.


Delphi для. NET


Як було оголошено, Galileo – це не просто Delphi.NET, а. NET Development Studio, багатомовна середу програмування, що включає в себе крім Delphi ще кілька мов. Продукт забезпечує повноцінний доступ до. NET Framework, даючи можливість використовувати технології ASP.NET,. NET Web-сервіси, WinForms і CF (Compact Framework).


Передбачено створення безпечного перевіряється коду в форматі проміжного мови MSIL, а також повноцінна взаємодія з іншими. NET-мовами.


Перш за все в Delphi.NET можна створювати класи та компоненти, що задовольняють специфікаціям CLS (Common Language Specification). Надалі ці компоненти можуть використовуватися в будь-якій мові програмування для. NET, який підтримує цю специфікацію. Крім того, інструментарій Delphi.NET може сам використовувати подібні компоненти, написані з урахуванням вимог CLS, на будь-яких інших мовах програмування для. NET.


Новий продукт зберігає сумісність з кодом Delphi для Windows. В Delphi.NET будуть реалізовані багато можливостей, аналогічні вже існуючим в Windows-версіях. Так, бібліотека VCL для. NET буде сумісна зі звичайною VCL (а невізуальні компоненти – і з CLX), з’являються призначені для. NET модулі – DataSnap Direct, DataSnap BDE Local і DataSnap Middleware (раніше MIDAS). Вводяться розширення мови, що використовують переваги. NET, – вкладені типи, простору імен, механізм складання сміття (garbage collection), властивості і поля класів (вони включені і в компілятор DCC32 для Delphi 7).


Новий продукт реалізує підтримку Microsoft SQL Server, а також підключення (причому не через ADO) таких СУБД, як Oracle, DB2, Interbase, MySQL і Sybase. Крім того, підтримуються Web-серверні додатки для IIS і Apache (малюнок).

Рис. 1. Можливості розробки крос-платформних додатків в Galileo


Нова стратегія Borland надає свободу вибору платформи для створюваних додатків. Якщо раніше за допомогою RAD-засобів, пропонованих Borland, можна було створювати додатки для Windows, Java або Linux, то тепер список доступних платформ поплнено ще й середовищем. NET. Мета Borland – дати користувачеві можливість за допомогою однієї і тієї ж середовища програмування створювати додатки для будь-якої доступної платформи, а потім легко переносити їх на іншу підтримувану платформу.


У числі іншого варто докладніше розповісти про компіляції та виконання. NET-додатків. На форумах часто йдуть запеклі дискусії з приводу того, чи будуть. NET-додатки працювати швидше звичайних, і якщо да, то за рахунок чого це досягається. Що стосується додатків для. NET, написаних в Delphi, то можна відповісти однозначно: такі програми працюють швидше завдяки функціям оптимізації, реалізованих в новому компіляторі. До того ж сам по собі використовується в середовищі. NET механізм, компілюються окремі фрагменти коду при зверненні до них, дає прекрасні можливості для оптимізації.


В оптимізаційних тестах, запропонованих на конференції провідним інженером Borland Денні Торпом,. NET-додаток показало кращий результат по продуктивності, ніж здійснимий файл, створений в Delphi 6. На відміну від Delphi 6. NET виробляє ряд додаткових оптимізацій в генерується байт-коді. Щоб пояснити це докладніше, варто розглянути окремо два процеси – компіляцію та виконання. NET-додатків.


Компіляція. NET-“зборки” (еквівалент Delphi Package) сильно відрізняється від obj-або dcu-файлів. Звичайні компілятори націлені на одну платформу і припускають певні припущення щодо компилируемого коду. Наприклад, в Delphi виклик функції транслюється як інструкція CALL [Address]. В даний час реальна адреса (у звичайних Windows-додатках) генерується з урахуванням того, що розмір регістра в процесорі Pentium – 32 біта. Але в зв’язку з тим, що. NET-додатки припускають можливість портування їх на різні програмні і апаратні платформи, такі припущення вже не мають сенсу. На сьогоднішній день адреса необов’язково має 32-бітне значення: на деяких машинах це 64 біта, а для стільникових телефонів – 16 біт.


Таким чином, в проміжному мовою. NET (MSIL) інструкція CALL завжди супроводжується складанням assembly.object.methodname [parameters]. Існуючі допущення вже недійсні, і доводиться відповідним чином міняти всю стратегію компіляції.


Говорячи про компіляції програм, не можна не сказати і про їх оптимізації. Одна зі стратегій оптимізації, продемонстрованих Денні Торпом, – підстановка викликів функцій у компіляторі IL. Підстановка викликів функцій – це можливість компілятора прибирати переходи під вкладені процедури і успадковувати їх код так, як ніби це частина викликається процедури. Припустимо, у нас є три процедури:






procedure DoThis;
begin
DoThat;
end;
procedure DoThat;
begin
DoThatOtherThat;
end;
procedure DoThatOtherThat;
begin
Inc(x);
end;

Після того як Delphi-компілятор закінчив компілювати код процедур DoThis і DoThat, ми отримаємо необхідний код для виконання інструкцій CALL до процедур DoThis і DoThatOtherThat, код для інструкції PUSH і відповідну інструкцію POP для повернення значення з стека.


Однак не зручніше чи просто виконати Inc (x) всередині самої процедури DoThis, замість того щоб проходити ще за двома процедурам? От саме цю можливість і здійснює підстановка виклику функції.


IL-компілятор використовує ще одну оптимізаційну техніку – видалення загального подвираженія (common subexpression elimination). В Delphi така тактика використовується вже зараз. Розглянемо наступний код:






for i := 0 to 100 do begin
x := (i mod 2)+1;
writeln(IntToStr(i mod 2));
DoSomething(i mod 2);
end;

Замість того щоб тричі обчислювати вираз I mod 2, Delphi і компілятор IL генерують константу і підставляють її замість вилученого подвираженія.


Майбутні розширення IL-компілятора будуть включати в себе так званий оптимізатор на основі профайлера (profiler based optimizer). Ця техніка запозичена почасти з середовища UNIX і грунтується на використанні деякої статистики, що генерується програмою-профайлером за результатами множинного виконання програми. Враховуючи цю статистику, компілятор зможе проводити додаткову оптимізацію.


І на завершення хотілося б розповісти трохи про новий скрипт-мові Charlotte. За словами представників Borland, це простий, але потужний мову програмування, призначений спеціально для створення Web-сервісів. Charlotte може сприйматися як скриптова мова, проте насправді у нього буде власний компілятор.


Charlotte створений спеціально для написання і використання Web-сервісів, тому має такі специфічні особливості:



За заявами Borland, Charlotte у використанні легше, ніж Visual Basic. Пов’язано це з тим, що нову мову, на відміну від C #, VB.NET і Delphi.NET, не повинен виконувати якісь додаткові дії, наприклад, конвертувати типи даних або використовувати відповідні класи для реалізації Web-сервісів. Charlotte неявним чином реалізує можливості створення Web-сервісів безпосередньо в мові.


Зараз поки рано говорити про те, наскільки хороший нову мову і доцільно його створення: на конференції він не був показаний у дії, було лише заявлено про його розробці. Тому варто почекати його появи, а вже потім робити висновки. Хоча про приблизну дату виходу Charlotte теж нічого не було сказано.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*