MacApp

A Wikipédiából, a szabad enciklopédiából

A MacApp az Apple Computer objektumorientált alkalmazási keretrendszere volt a klasszikus Mac OS számára. 1985-ben adták ki, majd az 1991-es 3.0-s verzió Object Pascalról a C++-ra váltott, ami támogatást nyújtott a System 7 új funkcióinak nagy részéhez. A MacAppot számos nagy alkalmazáshoz használták, mint például az Adobe Photoshop és a SoftPress Freeway. A Microsoft MFC-je és Borland OWL-je egyaránt közvetlenül a MacApp koncepciókon alapult.

Majd tíz éven keresztül a MacAppnek voltak olyan időszakai, mikor alig fejlődött, ezt követően azonban fellendülés következett be. Ebben az időszakban a Symantec Think Class Library / Think Pascalja komoly versenytársa lett a MacAppnek, amely egyszerűbb modellt kínált sokkal nagyobb teljesítményű integrált fejlesztői környezetben (IDE).

A Symantec lassan reagált a PowerPC platformra való áttérésre az 1990-es évek elején, és amikor a Metrowerks 1994-ben először bemutatta CodeWarrior/PowerPlant rendszerét, gyorsan kiszorította a MacAppet és a Thinket is, mint a Mac elsődleges fejlesztői platformjait. Még az Apple is a CodeWarriort használta elsődleges fejlesztői platformjaként a Copland-korszakban, az 1990-es évek közepén.

A MacApp rövid haladékot kapott 2000 és 2001 között, hogy áttérjen a Carbon rendszerre a Mac OS X-en. Azonban, miután egy verziót bemutattak a Worldwide Developers Conference-en (WWDC) 2001 júniusában, az összes fejlesztést októberben törölték.

Története[szerkesztés]

Pascal verziók[szerkesztés]

A MacApp a Lisa Toolkit közvetlen leszármazottja volt, ami az Apple első erőfeszítése volt az objektumorientált alkalmazás keretrendszerének megtervezésében, Larry Tesler vezetésével. A Toolkit mérnöki csapatába Larry Rosenstein, Scott Wallace és Ken Doyle került. A Toolkit Clascal néven ismert egyéni nyelven íródott, amely objektumorientált technikákat adott a Pascal nyelvhez.

Kezdetben a Mac fejlesztését egy fordítóprogram segítségével hajtották végre a Lisa Workshopban. A MAC értékesítésével befejezték a Lisa értékesítését, majd elkezdődött egy új fejlesztési platform felépítése a Mac számára, amely a Macintosh Programmer Workshop (MPW) lett. Ennek a folyamatnak a részeként a Clascal frissítve lett Object Pascal-ra, és Lisa Toolkit tervezési jegyzeteket kínált, amiből a MacApp lett.

Mac-program írása alkalmazás-keretrendszer nélkül nem könnyű feladat, de akkoriban az objektum-orientált programozási terület még viszonylag új volt, és sok fejlesztő még kissé gyanakodva tekintett rá. A korai keretrendszerek általában megerősítették ezt a gyanút, ugyanis nagyok, lassúak és jellemzően rugalmatlanok voltak.

A MacApp volt talán az első igazán használható keretrendszer. Az futtatható alkalmazások méretüket és memóriaterületüket tekintve elég ésszerűek voltak, és a teljesítményük sem volt elég rossz ahhoz, hogy a fejlesztőket elrettentse tőle. Noha első kiadásaiban "túl egyszerű" volt, számos utólagos verzió gyorsan megoldotta a fő problémákat. Ebben az időben, 1987 körül, a rendszer hasznos eszközzé érett, és számos fejlesztő elkezdte használni nagyobb projektekben.

C++ verziók[szerkesztés]

Az 1980-as évek végére, a piac a C++ felé haladt. Ekkoriban az Apple törekedett a System 7 kiadására, amely számos jelentős új funkcióval rendelkezett. Arról született a döntés, hogy áttérnek a MacApp egy teljesen új verziójára, a 3.0-ra, amely az Object Pascal helyett már a C++-t használja. Ez a lépés hosszú és heves vita tárgyát képezte az Object Pascal és a C++ hívei között a Usenet és más fórumokon. Ennek ellenére a 3.0-nak 1991-es megjelenése után sikerült elfogadható eredményeket elérnie, annak ellenére, hogy a fejlesztői csomag, az MPW egyre inkább elavult volt. Ezután az Apple csökkentette a teljes fejlesztői eszközcsoportot, így a MacApp és az MPW is létszámhiányban szenvedett.

Ennek a létszámleépítésnek az volt az egyik oka, hogy az Apple már hosszú ideje próbálta bemutatni a fejlesztés "következő nagy platformját", szinte mindig valamilyen platformfüggetlen rendszer formájában. Az első kísérlet a Bedrock volt, a Symantec-szel együttműködve létrehozott osztálykönyvtár, amely Mac és Windows rendszereken futott, de elhúzódó halált halt, mivel mindkét fél végül felhagyott a másikkal való együttműködéssel. Problémáik egyik oka az OpenDoc létrehozása volt, amelyet platformfüggetlen rendszerre fejlesztettek, és amely közvetlenül versengett a Bedrockkal. Volt néhány kísérlet arra, hogy a Bedrockot az OpenDoc platformra pozicionálják, de ebből soha nem lett semmi.

Amíg ezek a fejlesztések zajlottak, az MPW és a MacApp nagyrészt figyelmen kívül voltak hagyva. Fontosabb volt a fejlesztői erőforrásokat felhasználni az új projektekbe, hogy segítsen nekik mihamarabb piacra jutni. De amikor a Bedrock kudarcot vallott, és az OpenDoc lagymatag fogadtatásban részesült, a Mac-nek olyan eszközei maradtak, amelyek már majdnem egy évtizedesek voltak, és nem tudtak versenyezni a harmadik felek újabb termékeivel. Az 1990-es évek elején a versengő keretrendszerek a MacApp valódi versenytársaivá nőtték ki magukat. Először a Symantec TCL-je szerzett támogatókat, majd a Metrowerks PowerPlantja az egész piacot átvette.

Elhúzódó halál[szerkesztés]

A MacApp fő fejlesztői az 1990-es évek folyamán továbbra is alacsony aktivitási szinten dolgoztak a rendszeren. Amikor az Apple összes "hivatalos" platformfüggetlen projektje megbukott, 1996 végén a csapat bejelentette,hogy biztosítani fogják a MacApp platformfüggetlen verzióját.

Röviddel ezután az Apple megvásárolta a NeXT-et, és bejelentette, hogy a OpenStep lesz az Apple elsődleges fejlesztési platformja, Cocoa néven. A Cocoa már platformfüggetlen volt, akkoriban már körülbelül hat platformra portolták, és jóval fejlettebb volt, mint a MacApp. Ez a megmaradt Mac programozók tiltakozásához vezetett, ugyanis a programjaikat a ”penalty box”-ba küldték és gyakorlatilag elhagyatottá váltak.

Az 1998-as WWDC-n Steve Jobs bejelentette, hogy a Cocoa-ra való áttéréssel kapcsolatos negatív visszajelzéseket a Carbon-rendszer bevezetésével kezelik. A Carbon-rendszer lehetővé tenné a Mac programok megfelelő futtatását az új operációs rendszer alatt, némi átalakítás után. A Metrowerks bejelentette, hogy a PowerPlant keretrendszerét a Carbon-ra portálja, de az Apple nem tett hasonló bejelentést a MacApp kapcsán.

Ebben az időszakban megmaradt a hűséges MacApp-felhasználók magja, de egyre inkább csalódtak az Apple magatartásában. Az 1990-es évek végére, a Cocoa bemutatása után ugyanis az Apple a MacAppet egyre inkább elutasította. A dolgok odáig fajultak, hogy annak elkerülése érdekében, hogy az Apple munkatársai nehogy megtiltsák a találkozót, a MacApp-felhasználók egy csoportja álnéven szervezte meg a saját találkozóját a WWDC '98 -on.

Ezt a folyamatos támogatást észrevették az Apple-nél, és egy "új" MacApp-csapat, egy olyan csapat akinek tagjai mindvégig dolgoztak rajta, egy új verzió kiadására kaptak feladatot 1999-ben. Bekerült az új Apple Class Suites (ACS), egy vékonyabb C++ becsomagoló réteg a OpenStep által bevezetett számos új Mac OS-szolgáltatáshoz. A MacApp 3.0 15. Kiadás 2001. augusztus 28-án jelent meg sokak örömére. Októberben azonban a terméket ismét lelőtték, ezúttal örökre, és a MacApp meglévő verzióinak támogatása hivatalosan is megszűnt.

A Carbon-kompatibilis PowerPlant X csak 2004-ben jelent meg, és a mai napig a Cocoa szinte univerzális mind a MacOS, mind az iOS programozáshoz.

A MacApp napjainkban[szerkesztés]

A MacAppot egy elkötelezett fejlesztői csoport tartja életben, akik fenntartották és továbbfejlesztették a keretrendszert, mióta az Apple 2001-ben abbahagyta annak támogatását. A MacApp frissítésre került, amely így már teljes mértékben támogatni tudja a Carbon Events-t, az Universal Binaries-t, az Unicode Text-et, az MLTE vezérlést, a DataBrowser vezérlést, az FSRefs-t, XML elemzést, Custom Controls-t, Composite Window-t, Drawer Window-t, HIView Windows-t és a Custom Windowst-. A MacApp C++ csomagoló osztályokkal is rendelkezik a HIObject és a HIView számára. A Pascal verzió is, ami főképp MacApp2-re épül szintén portolva lett Mac OS X-re és az Xcode-ra. Hosszú Unicode fájlneveket és streamelt dokumentumokat tartalmaz, automatikus bájtcserével.

A MacApp támogatja az Xcode IDE-t. Sőt mi több, a WWDC-n 2005-ben, miután az Apple bejelentette az Intel processzorokra való átállást, egyetlen fejlesztőnek 48 órába tellett a MacApp, illetve a MacApp mintaprogramok frissítése hogy támogatni tudják a Universal Binaries-t.

Leírás[szerkesztés]

Ez a leírás a MacApp 3.0-n alapul, amelynek fejlettebb mögöttes modellje volt, mint a korábbi 2.0-nak, és sok tekintetben különböztek egymástól.

Magának a Mac OS-nek nagyon egyszerű eseménykezelő rendszere van. Az eseményszerkezetnek, ami az operációs rendszerből az alkalmazáshoz továbbít csak olyan eseménytípusai vannak, mint a "billentyűleütés" vagy az "egérkattintás". Az alkalmazás feladata, hogy ezt az felhasználó által végrehajtott műveletet dekódolja, például egy menüparancsra kattintást. Ennek a dekódolása nehéz lehet, végig kell futnia a képernyőn megjelenő objektumok listáján, és ellenőrizni, hogy az esemény a hatáskörén belül történt-e meg.

A MacApp megoldást adott erre a problémára a parancs minta használatával, amelyben a felhasználói műveleteket egységbe zárják az esemény részleteit tartalmazó objektumokba, majd elküldik a megfelelő objektumnak végrehajtásra. Az eseménynek a "megfelelő objektumhoz" való hozzárendelésének logikáját teljes egészében a keretrendszer és annak futási ideje alatt kezelték, ami jelentősen csökkentette a feladat bonyolultságát. A MacApp belső gépezetének feladata, hogy az operációs rendszer alapvető eseményeit átvegye, szemantikailag magasabb szintű parancsokká alakítsa át, majd a parancsot a megfelelő objektumhoz irányítsa.

Nemcsak, hogy a MacApp mentesítette a kód íróját a minden programhoz szükséges kód megírásától, de úgymond mellékhatásként ez a kialakítás szétválasztotta a kódot parancsokká, felhasználó felé irányuló műveletekké és azok kezelőivé, majd a munkát belső kód végezte el. Például lehet, hogy vannak parancsai a "Torn Green" és a "Turn Green" parancsokhoz, mindkettőt egyetlen metódus, a ChangeColor () kezeli. Egy olyan program, amely tisztán elkülönítette a parancsokat és a kezelőket, Apple szóhasználatban is ismert volt, a faktorálás.

A program faktorálása különösen fontos volt a Mac OS későbbi verzióiban, a System 7-től kezdve. A System 7 bevezette az Apple Events rendszert, amely az eredeti Mac OS eseményrendszerét sokkal gazdagabbra bővítette, lehetővé téve az alkalmazások közötti küldést is, tehát már nem csak az operációs rendszer és egy alkalmazás között volt ez lehetséges. Ezt kombinálták az AppleScript rendszerrel, amely lehetővé tette ezeknek az eseményeknek a szkript kódból történő előállítását. A MacApp 3.0 alkalmazásban az Apple Events programokat ugyanabba a parancsba dekódolták, mintha közvetlen felhasználói műveletek indították volna őket, vagyis a fejlesztőnek nem kellett sokat, ha kellett egyáltalán, kódot írni az Apple Events közvetlen kezeléséhez. Ez komoly problémát jelentett a korábbi rendszereket - köztük a MacApp 2.0-t - használó fejlesztők számára, amelyek nem rendelkeztek ilyen elválasztással, és gyakran az Apple Event támogatásának kihagyásához vezettek.

Alkalmazási keretrendszernek megfelelően a MacApp számos előre-hengerelt objektumot is tartalmazott, amelyek lefedték az alapvető Mac GUI-k nagy részét - az ablakok, a menük, a párbeszédpanelek és hasonló widgetek egyaránt képviseltették magukat a rendszerben. Sajnos az Apple jellemzően könnyű csomagolókat szállított a meglévő belső Mac OS-kód fölé, ahelyett, hogy a „való világban” használható rendszereket biztosított volna. Például a TTEViewosztályt kínálták standard szövegszerkesztő widgetként, de a mögöttes TextEdit megvalósítás korlátozott volt, és maga az Apple is gyakran kijelentette, hogy nem szabad professzionális alkalmazásokhoz használni. Ennek eredményeként a fejlesztők gyakran kénytelenek voltak kiegészítő objektumokat vásárolni, hogy megfeleljenek az ilyen jellegű igényeknek, vagy maguk oldották meg. A professzionális minőségű GUI-objektumok hiánya a MacApp egyik legnagyobb problémájának tekinthető.

Ezeket a problémákat a MacApp R16 kiadásával orvosolták. A MacApp R16 az összes MacApp GUI objektumhoz szabványos Carbon vezérlőket használ. Például a Carbon bevezette a Multilingual Text Engine-t (MLTE) a teljes Unicode szöveg és long dokumentum támogatáshoz. Az R16-ban az eredeti TTEViewosztályt a TMLTEView váltotta fel, amely az MLTE vezérlőt használja.

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a MacApp című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

További információk[szerkesztés]