{"id":343,"date":"2026-08-07T16:23:00","date_gmt":"2026-08-07T14:23:00","guid":{"rendered":""},"modified":"2026-08-07T17:53:11","modified_gmt":"2026-08-07T15:53:11","slug":"sedici-anni-stack-tecnologico-apple","status":"publish","type":"post","link":"https:\/\/www.gral-informatica.com\/site2\/sedici-anni-stack-tecnologico-apple\/","title":{"rendered":"Sedici anni di GRAL: lo stack tecnologico Apple che ci ha accompagnato"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\" style=\"font-size:1.125rem;line-height:1.7\">Studio GRAL Informatica nasce nel <strong>2010<\/strong>, un anno in cui l&#8217;iPhone ha appena due anni di vita commerciale, l&#8217;iPad esce a giugno e l&#8217;App Store conta poco pi\u00f9 di 250.000 applicazioni. Lo stack Apple di allora \u00e8 essenzialmente Objective-C e UIKit. Un altro mondo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2010-2013 \u2014 Objective-C, UIKit, Core Data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le prime versioni di <strong>Atlante di Anatomia<\/strong>, <strong>Lessico Medico<\/strong> e <strong>Farmacologia<\/strong> nascono in Objective-C. Storyboard, UIKit, Core Data. \u00c8 lo stack di riferimento per anni: solido, prevedibile, verboso quanto vuoi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2014-2019 \u2014 Swift 1, 2, 3, 4, 5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;annuncio di <strong>Swift<\/strong> alla WWDC 2014 apre un decennio di transizioni. Sintassi in evoluzione continua, migration tools che si aggiornano ogni major release, un intero ecosistema che si adatta. Nel nostro catalogo introduciamo Swift gradualmente, mantenendo l&#8217;ObjC dove serve \u2014 un pattern che seguiamo ancora oggi per rispettare la stabilit\u00e0 delle codebase esistenti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2019-2023 \u2014 SwiftUI, Combine, Mac Catalyst<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>SwiftUI<\/strong> (WWDC 2019) cambia il paradigma: dichiarativo, reattivo, cross-platform Apple. <strong>Mac Catalyst<\/strong> ci permette di portare le app iPad su Mac con un checkbox. In parallelo, l&#8217;attivit\u00e0 di <strong>consulenza enterprise<\/strong> ci porta a lavorare su codebase molto grandi, dove SwiftUI si integra progressivamente con UIKit esistente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2024-2026 \u2014 Swift 6, Foundation Models, tvOS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lo stack attuale del catalogo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Swift 6<\/strong> con strict concurrency dove sensato \u2014 la migrazione \u00e8 graduale, non dogmatica<\/li>\n<li><strong>SwiftUI<\/strong> come default per view nuove, UIKit dove serve controllo fine (PDFKit, PencilKit, gesture custom)<\/li>\n<li><strong>Foundation Models<\/strong> di Apple Intelligence per le funzioni AI on-device (iOS 26+)<\/li>\n<li><strong>Mac Catalyst<\/strong> per la distribuzione universale iOS\/Mac<\/li>\n<li><strong>tvOS<\/strong> per la linea Anatomia TV \u2014 una scelta di posizionamento sul salotto<\/li>\n<li>Widget iOS per accesso rapido alle app dal home screen<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Un principio ci guida da sempre: <strong>API native Apple<\/strong>, nessun framework cross-platform. Il costo iniziale \u00e8 maggiore, il risultato \u00e8 un&#8217;esperienza utente che segue le convenzioni di sistema \u2014 che \u00e8, in fondo, quello che gli utenti Apple si aspettano.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Dal 2010 a oggi (sedici anni): come \u00e8 cambiato il nostro stack di sviluppo, tra ObjC-UIKit, Swift, SwiftUI, Mac Catalyst, tvOS e ora Foundation Models.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-343","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/posts\/343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":0,"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gral-informatica.com\/site2\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}