Microsoft Visual J# .NET verze 2003 je souΦßstφ Microsoft Visual Studia .NET verze 2003 (psali jsme o n∞m v Chipu 9/03). Proto₧e se s p°edchozφ verzφ Visual Studia tento nßstroj nedodßval, podφvßme se na n∞j podrobn∞ji.
Tento Φlßnek vychßzφ ze zkuÜenostφ s Visual J# z Visual Studia .NET 2003 Enterprise Architect.
O co jde a o co nejde
Nßstroj Visual J# slou₧φ pro v²voj aplikacφ pro platformu .NET a je urΦen v²vojß°∙m, kte°φ znajφ programovacφ jazyk Java, nejlΘpe Visual J++ 6.0. Obsahuje integrovanΘ v²vojovΘ prost°edφ (IDE) podobnΘ jako ostatnφ programovacφ jazyky Visual Studia, p°ekladaΦ jazyka J#, p°ekladaΦ bajtovΘho k≤du Javy do mezijazyka MSIL a sadu nezßvisle vyvinut²ch knihoven t°φd, kterΘ poskytujφ mo₧nosti odpovφdajφcφ t°φdßm z knihoven Javy. Podporuje takΘ dopl≥kovΘ balφky com.ms.lang, com.ms.dll, com.ms.com, com.ms.win32, com.ms.util a com.ms.jdbc.odbcz Visual J++, z nich₧ n∞kterΘ poskytujφ funkcionalitu obdobnou jako JDK 1.2. Visual J# nenφ urΦen k v²voji aplikacφ pro JVM, i kdy₧ jazyk J# je syntakticky shodn² s Javou.
IDE
U₧ jsme si °ekli, ₧e IDE Visual J# je shodnΘ s IDE ostatnφch programovacφch jazyk∙ Visual Studia. To znamenß, ₧e obsahuje editor, kter² umo₧≥uje Φφslovat °ßdky, zv²raz≥uje syntax, poskytuje nßstroje pro lad∞nφ, bublinovou nßpov∞du p°i psanφ, umo₧≥uje vizußlnφ v²voj aplikacφ s grafick²m u₧ivatelsk²m rozhranφm atd. Vedle toho poskytuje °adu oken, kterß nabφzejφ r∙znΘ pohledy na aktußlnφ projekt, dynamickou nßpov∞du apod. O tom vÜem jsme podrobn∞ji hovo°ili v Φlßnku o Visual Studiu .NET 2003. Poznamenejme vÜak, ₧e dynamickß nßpov∞da k Visual J# nabφzφ pouze informace o n∞kter²ch knihovnφch t°φdßch, nikoli o jazyku J# nebo o .NET Framework SDK. Informace je nutno Φerpat p°edevÜφm z webov²ch strßnek firmy Microsoft.
Jazyk J#
U₧ vφme, ₧e J# je programovacφ jazyk prakticky shodn² s Javou. P°esn∞ji, po strßnce syntaxe jde o Javu na ·rovni JDK 1.1.4 s microsoftsk²mi rozÜφ°enφmi, jako jsou delegßty a J/Direct. (P°ipome≥me, ₧e delegßty jsou objektov∞ zapouzd°enΘ ukazatele na metody objektov²ch typ∙, kterΘ se svΘho Φasu staly p°φΦinou nejprve slovnφch a pak i soudnφch spor∙ mezi firmami Microsoft a Sun Microsystems.) J# neobsahuje pozd∞jÜφ rozÜφ°enφ jazyka Java, jako je p°φkaz assert. V jazyce J# m∙₧eme pochopiteln∞ vyu₧φvat knihoven prost°edφ .NET. Vedle toho jsou ale k dispozici i tradiΦnφ balφky t°φd z knihovny Javy.
Snad nejvφce napovφ krßtkß ukßzka programu, n∞co jako tradiΦnφ "Hello, world".
package ÄlutßKonina;
import System.*;
import System.Runtime.InteropServices.*;
/** Souhrnn² popis t°φdy ÄlutßKonina.Älu¥ouΦk²K∙≥. */
public class Älu¥ouΦk²K∙≥
{ static String zaΦßtek = "Älu¥ouΦk² k∙≥";
static String konec = "p°φÜern∞ ·p∞l ∩ßbel skΘ ≤dy";
/** @attribute DllImport("user32", Cha rSet=CharSet.Ansi) */
P°φklad ukazuje pou₧itφ t°φd prost°edφ .NET a pou₧itφ t°φd z JDK pro t²₧ ·Φel. VÜimn∞te si, ₧e J# podporuje dokumentaΦnφ komentß°e. Odpovφdajφcφ HTML strßnky s dokumentacφ lze v IDE vytvo°it p°φkazem z nabφdky.
Podobn∞ jako ostatnφ jazyky urΦenΘ pro .NET Framework i Visual J# umo₧≥uje p°ipojovat ke t°φdßm, prom∞nn²m, metodßm a dalÜφm souΦßstem programu tzv. atributy. Pou₧φvß se k tomu dokumentaΦnφ komentß° se znaΦkou @attribute. (P°ipome≥me, ₧e jde o deklarativn∞ zadßvanΘ dopl≥ujφcφ informace - nap°. o tom, ₧e danß metoda je naprogramovßna v dynamickΘ knihovn∞ v ne°φzenΘm k≤du atd.)
V naÜem p°φkladu vidφte v²stup na konzolu pomocφ objektu System.Consolez knihovny .NET a pomocφ javovskΘho objektu java.lang.System.out. V prvnφm p°φpad∞ text vystoupφ ve sprßvnΘm k≤dovßnφ ΦeÜtiny, zatφmco ve druhΘm (jak je v Jav∞ obvyklΘ) bychom museli k≤dovßnφ p°edepsat. Text v dialogovΘm okn∞ vystoupφ sprßvn∞.
P°φklad takΘ ukazuje, ₧e J# dovoluje pou₧φvat znaky nßrodnφch abeced v identifikßtorech. Jsem si v∞dom, ₧e po zhlΘdnutφ v²Üe uvedenΘho p°φkladu naskßΦe n∞kter²m "opravdov²m profesionßl∙m" kop°ivka, nicmΘn∞ v poslednφch letech tuto mo₧nost nabφzφ stßle vφce programovacφch nßstroj∙, nebo¥ neangliΦtφ programßto°i to zaΦφnajφ vy₧adovat. Koneckonc∙, pot°ebujφ p°em²Ület o °eÜenΘm problΘmu, ne o tom, jak se to °ekne anglicky.
Typy projekt∙
Ve Visual J# lze vytvß°et podobnΘ projekty jako v ostatnφch souΦßstech Visual Studia: konzolovΘ a okennφ aplikace, knihovny t°φd a °φdicφch prvk∙, aplikace ASP .NET, webovΘ slu₧by zalo₧enΘ na ASP .NET, slu₧by pro Windows nebo aplikace pro mobilnφ za°φzenφ. Vytvo°enß seskupenφ a t°φdy majφ podobnΘ vlastnosti jako t°φdy a seskupenφ (assembly) vytvo°enß v ostatnφch souΦßstech Visual Studia.
Konverze Javy na J#
Chceme-li p°evΘst existujφcφ programy v Jav∞ do prost°edφ .NET, mßme nßsledujφcφ mo₧nosti:
Mßme-li k dispozici zdrojov² text programu, zkusφme ho p°elo₧it p°ekladaΦem J#. P°i dodr₧enφ dßle uveden²ch podmφnek bychom nem∞li narazit na ₧ßdnΘ problΘmy.
Mßme-li k dispozici pouze soubory . classobsahujφcφ bajtov² k≤d, m∙₧eme k p°evodu pou₧φt Visual J# Binary Converter Tool (JbImp.exe). Tento program umφ p°evΘst v∞tÜinu soubor∙ s bajtov²m k≤dem do mezijazyka MSIL a vytvo°it z n∞j seskupenφ, tedy nap°. spustiteln² soubor nebo dynamickou knihovnu pro prost°edφ .NET. Program JbImp.exe se spouÜtφ z p°φkazovΘ °ßdky. Poradφ si s v∞tÜinou standardnφch knihoven JDK 1.1.4 a s microsoftsk²mi rozÜφ°enφmi.
Neporadφ si s bajtov²m k≤dem, kter² pou₧φvß technologii pro spoluprßci Javy a komponent COM. Neporadφ si takΘ s applety, kterΘ v .NET nemajφ obdobu, s RMI, RNI, JNI a s k≤dem, kter² pou₧φvß konstrukce, je₧ nebyly v JDK 1.1.4.
Z balφku java.netz Visual J++ jsou podporovßny pouze protokoly FTP, HTTP a souborovΘ protokoly, nikoli SMTP, NNTP, a MailTo. Nejsou podporovßny takΘ n∞kterΘ t°φdy z balφku com.ms.com.
Provedenφ
Microsoft Visual J# .NET 2003 se dodßvß bu∩ samostatn∞ v provedenφ Standard, nebo jako souΦßst n∞kterΘho z provedenφ Visual Studia .NET. (Visual Studio .NET v provedenφ Standard neexistuje.)
Zßkladnφ prost°edky pro v²voj aplikacφ v tomto jazyce, tedy p°ekladaΦ spouÜt∞n² z p°φkazovΘ °ßdky spolu s balφkem dalÜφch nßstroj∙, lze zφskat zdarma na internetu v tzv. Microsoft Visual J# .NET redistributable package.
K Φemu to?
Na prvnφ pohled by se mohlo zdßt, ₧e Visual J# .NET je totΘ₧ co nap°. Visual C# .NET: prost∞ dalÜφ jazyk, kter² navφc nep°inßÜφ nic novΘho. Zamyslφmeli se ale nad tφmto produktem hloub∞ji, zjistφme, ₧e jde o velice mocn² nßstroj v konkurenΦnφm boji s Javou. Nejen₧e umo₧≥uje programßtor∙m snadno p°evΘst existujφcφ aplikace z Javy do prost°edφ .NET, ale navφc umo₧≥uje zaΦφt rovnou programovat, ani₧ by se museli uΦit nov² jazyk a seznamovat se s nov²mi knihovnami. Je to dobr² nßstroj, i kdy₧ by byl jeÜt∞ daleko lepÜφ, kdyby si um∞l poradit s JDK 1.4.