brg ha scritto:Allora rispondo io alla mia domanda di prima: applicazioni commerciali .NET per sistemi non Windows non esistono perché il lato "client" della tecnologia è completamente ed irrinunciabilmente solo per Windows (WinForms, WPS...).
Tu continui a battere su un punto che non ha senso quando ti ho già risposto più volte che ciò che intendi fare è BROKEN BY DESIGN.
1) Le GUI multipiattaforma SONO UN CANCRO. AWT, Swing sono dei mostri che non sarebbero mai dovuti nascere.
Ed è il motivo per cui a parte due-tre applicazioni in croce (leggasi per lo più IDE o roba molto settoriale) Java lato client È MORTO.
Quando la SUN progettò Java pensò di poterlo fare diventare il linguaggio di riferimento per TUTTE le applicazioni desktop. Ma così non è stato perché NON ESISTE un toolkit che funziona bene OVUNQUE.
Il modello che la SUN voleva portare avanti era: "write once, run everywhere". Ma questo era ed È TUTTORA impossibile da raggiungere con quella piattaforma.
Non si può pensare di sviluppare una sola volta e pensare che quella applicazione funzionerà perfettamente su qualsiasi OS di questo mondo.
Non a caso i Java haters storpiavano il motto in "write once, debug everywhere".
E sempre non a caso chi sviluppava soluzioni commerciali Java lo faceva per DUE-TRE piattaforme target e mai in maniera generalista.
Perché NESSUNA azienda poteva permettersi di rilasciare software senza fare QA sui sistemi target.
E che Java inteso come piattaforma universale sia stato un fallimento lo si vede anche da come J2ME non sia riuscito su Symbian a proporre applicazioni che girassero su tutti i telefoni in maniera perfetta.
Ripeto per l'ennesima volta: Ciò che deve essere REALMENTE cross-platform è la logica di base.
Le GUI sono e saranno sempre roba non-portabile. Cose che devono essere sviluppate sul sistema target.
Java lato client nel 2015 lo trascina SOLO Android che ha le SUE API.
Per il resto lo si usa lato server, embedded e robotica/automazione. Ovvero tutti settori in cui il cross-platform non serve a niente perché l'applicazione deve rimanere nella macchina target e lavorare lì.
2) Il widget toolkit oggi NON È PIÙ rilevante come dieci anni fa.
.NET è stato reso open source, e te l'avevo già detto prima, perché rientra nella strategia CLOUD di Microsoft.
Non a caso ciò che Microsoft ha portato subito su Linux è ASP.NET. Perché gli serve per dare al framework un nuovo scopo che vada oltre il creare applicazioni desktop, in quanto Microsoft .NET come piattaforma lato client è morta quanto lo è Java.
E per due motivi:
2.1) Il modello di applicazione nativa sta andando a scemare.
Oggi il modello che si sta seguendo sempre di più è SaaS deployato su Azure, AWS e simili. Le applicazioni native sono fornite, e se fornite, come back-end.
Esempio pratico? Microsoft Office 365 che è diventata l'offerta principale, con la suite locale considerata un PLUS, o Adobe Creative Cloud che ha sostituito la vecchia Creative Suite.
Il concetto di agnosticismo basato sullo sviluppo lato client è un controsenso. I client sono diversi l'uno dall'altro, per API sottostanti, OS, form factor ecc.
Non si può pensare di poter sviluppare una piattaforma che non tenga conto di tutte queste variabili e pensare che vada tutto bene. Ecco perché Java ha fallito.
Motivo per il quale oggi si è capito che l'agnosticismo va fatto lato server, con webapp che hanno due form factor (mobile/touch e desktop) e che non si devono più preoccupare su che API ha il sistema sottostante, perché gireranno all'atto pratico SOLO sul sistema operativo remoto.
2.2) Il modello JIT applicato interamente ad un'applicazione è un fallimento su tutta la linea.
Un'applicazione di un certo peso NON può essere in bytecode per venire poi compilata in fase di runtime, perché rallenta TROPPO l'esecuzione.
Motivo per il quale i compilatori .NET permettono anche la compilazione binaria, oltre che quella in CLI.
E Java è messo ancora peggio visto che oltre alla normale Class Library si ritrova a dover gestire pure le classi dei widget.
Difatti le applicazioni Java sono tutte fottutamente lente e pesanti: guarda JDownloader e vedi come sta messo. Altro motivo per cui Java lato client è morto.
Il modello JIT sta avendo successo SOLO su parti di uno stack, come llvmpipe.
E se pensi che hashbang dica cazzate, ti invito a vedere Android 5 che è passato da Dalvik basato su modello JIT ad ART che usa modello AOT con binari ELF, proprio per questi motivi.
Per il lato server puoi o usarlo al posto del LAMP (ma allora perché non usare il LAMP?)
Per lo stesso motivo per il quale c'è chi usa Node, Django o Rails al posto di PHP.
E no, non stiamo su microsofty.eu. Stiamo su un sito in cui si presume che chi scrive di argomenti non metta in mezzo teorie complottistiche e teorie del Microsoft brutta e cattiva, ma faccia ragionamenti pragmatici e basati sull'andamento e sulle tendenze dello sviluppo software.
Come ho già scritto all'inizio di tutto questo: Microsoft ha la sua visione nel cloud e Linux rientra naturalmente nella sua strategia.
Non si tratta di essere buona o di essere stata illuminata sulla via di Damasco. Nadella non è San Paolo.
Microsoft è una corporation che ha un CdA ed il cui obbiettivo è fare SOLDI. Linux oggi permette di guadagnare? Bene, lo si usa. Non lo permette? Bene, si va oltre.
Non ho mai messo in mezzo la bontà d'animo. Ho sempre fatto un discorso di convenienza tecnica ed economica.
E l'articolo che hai linkato, che parla anche della storiella di FAT, fondamentalmente mi dà ragione quando dicevo che Microsoft si è trovata in una situazione nella quale rischiava l'oblio a causa del fatto che Linux è troppo dominante, e non più più far finta che non esista.
E la dimostrazione è proprio quella: hanno tentato la via dell'estorsione con FAT in modo da smerciare licenze sottobanco di WP e gli è andata male.
Da lì l'unica soluzione rimasta era quella di cambiare: o si mettevano in testa che Linux era un competitor che non si può schiacciare con le mazzette e le estorsioni, e che quindi l'unica cosa da fare è accettarne l'egemonia e sfruttarlo per i propri vantaggi, o soccombere. Microsoft ha scelto la prima.
Non l'ha fatto per bontà d'animo. L'ha fatto per pura sopravvivenza. Queste cose te l'ho dette all'inizio, nel secondo post di questo thread.