Vantaggi e possibili svantaggi dell'uso di Java per lo sviluppo multipiattaforma rispetto a .NET? [chiuso]

4

Se dovessi iniziare a scrivere un'applicazione utilizzando Java con l'intenzione di portarlo su altre piattaforme con modifiche minime o nulle, sarebbe saggio prendere in considerazione l'uso del framework .Net?

Non ho in mente obiettivi specifici per quanto riguarda la piattaforma. Come minimo, il supporto per Windows / Mac / Linux sarebbe bello. Anche la facilità d'uso per l'utente finale è una considerazione.

    
posta Nathan Osman 27.12.2010 - 01:27
fonte

8 risposte

8

Non andrei con .Net. Mono non è male, ma se usi qualche angolo oscuro di C # o la libreria .Net che Mono non supporta, allora sei fregato. In questo modo è meno probabile che avvenga in Java perché Sun supporta le implementazioni complete di Java per Windows, Mac e Linux.

    
risposta data 27.12.2010 - 05:23
fonte
2

Per la compatibilità multipiattaforma .net non è la risposta ... e non mi da nessuna sciocchezza "ma mono ...". Mono's just non è aggiornato con le librerie della classe framework corrente.

    
risposta data 22.01.2011 - 17:42
fonte
1

Penso che, se ti interessa il look-and-feel nativo nell'ambiente Mac, puoi andare su mono mantenendo l'interfaccia utente e il core liberamente accoppiati. Perché in mono puoi ottenere più look-and-feel nativo per piattaforme diverse utilizzando diverse API dell'interfaccia utente mono come Cocoa #. Ma devi passare più tempo.

Può essere Java supporta anche le API per piattaforme diverse. Ma la pratica non è comune, credo.

Un altro punto è, se usare C # ti rende più produttivo, vai per mono.

    
risposta data 27.12.2010 - 10:25
fonte
1

Nelle parole di Microsoft, il .Net Framework è costituito dalle seguenti parti:

* Common Language Runtime or CLR, which provides an abstraction layer over the operating system

* Base Class Libraries, which are pre-built code for common low-level programming tasks

* Development frameworks and technologies, which are reusable, customizable solutions for larger programming tasks

Mono è una piattaforma software progettata per consentire agli sviluppatori di creare facilmente applicazioni multipiattaforma. Sponsorizzato da Novell (http://www.novell.com/), Mono è un'implementazione open source di Microsoft .NET Framework basata sugli standard ECMA per C # e Common Language Runtime.

Fornisce un supporto decente per il CLR ma manca l'ampiezza di "Base Class Libraries" e "Development frameworks & technologies". Ciò è particolarmente vero se si considera l'enorme ecosistema di Java. Quest'ultimo ha raggiunto un livello di maturità ed è supportato da una pletora di pubblicazioni (Wiki, Guide per l'utente, Libri, Articoli, ecc.). Infine, ci sono stati un certo numero di nuovi linguaggi (ad esempio Groovy, Scala) e framework (ad esempio Grails, Spring Roo, GWT) che possono rendere la tua squadra enormemente produttiva in una vasta area di domini funzionali.

L'unica avvertenza sarebbe, ovviamente, se è necessario integrare i prodotti Microsoft (ad esempio Microsoft Office) nella propria applicazione (sia all'interno del browser o in un'app standalone). In tal caso l'approccio .NET ti darebbe un vantaggio significativo ma sarebbe non essere facile da trasferire su questi vantaggi ad altre piattaforme (ad es. Linux).

L'ecosistema Java è enorme e contiene librerie di alta qualità per praticamente tutto ciò che si può pensare. Infatti, prima di iniziare a scrivere la tua app, dovresti condurre una ricerca attraverso i progetti Open Source che sono stati scritti in Java. È molto probabile che ciò che stai cercando di costruire sia molto simile a qualcosa che esiste già. Quindi, a seconda della licenza (cerca LGPL, BSD, MIT, ecc.), Potresti trovare qualcosa per iniziare prima ancora di rompere un sudore.

In sintesi, se il tuo obiettivo principale è raggiungere il supporto multipiattaforma, allora Java è la soluzione migliore.

    
risposta data 29.12.2010 - 22:05
fonte
0

Ovviamente Java ha alcune capacità multiplaftorm, dove .Net / Mono è risibile. Puoi dire che C è anche portatile, e tu saresti più o meno corretto.

Se si tratta di applicazioni desktop, lo farei semplicemente in Qt. Di gran lunga la migliore interfaccia grafica esistente e veramente multiplaftorm.

Per i non desktop, un buon linguaggio di scripting è solitamente la strada da percorrere.

    
risposta data 27.12.2010 - 12:36
fonte
0

Sicuramente vai su Java su .NET se la tua principale preoccupazione è la multipiattaforma.

.NET in pratica ti blocca nello stack tecnologico Microsoft. Mono è bello e tutto il resto, ma non è completo o aggiornato con tutte le librerie .NET (e probabilmente non verrà mai dato che stanno inseguendo un obiettivo mobile e Microsoft non ha alcun reale incentivo per aiutarle ...)

D'altra parte, ho scritto un'app ragionevolmente complessa (compresa l'interfaccia grafica Swing) in Java e l'ho eseguita con successo la prima volta sia su Mac che su Linux, senza la necessità di ricompilare. A tale riguardo, Java è quasi una piattaforma multipiattaforma come si può sperare. Ci sono alcune aree in cui devi stare attento (ad esempio usando JNI per accedere alle librerie native) ma se ti attieni allo standard, puro Java allora la portabilità è praticamente perfetta.

Vedi anche questo post che ho fatto su Java come scelta di piattaforma .

    
risposta data 14.02.2011 - 17:41
fonte
-1

Direi di andare con quello che ti piace. Se tu - mentre scrivi il codice - tieni presente che l'app deve essere eseguita su diversi sistemi e testare presto e spesso scommetto che sarai o.k.

Non ho scritto java da molto tempo "nei primi tempi" anche il porting non era sempre divertente. (ad esempio, la grafica 3D viene in mente ...)

Se scegli mono / .net hai bisogno di usare windows.forms e fare tutti i tuoi moduli in windows (non esiste attualmente ui-editor windows.forms in linux) o potresti usare gtk e far installare i tuoi windows-user prima gtk.

Personalmente ho (in 2 progetti ora) raddoppiato l'interfaccia utente. Wpf per Windows, gtk per il resto ...

    
risposta data 27.12.2010 - 10:06
fonte
-1

Crea semplicemente un'applicazione web e fallo con esso.

Avendo sviluppato sia applicazioni desktop che applicazioni Web.

Sono giunto alla conclusione che la maggior parte delle applicazioni desktop funzionano altrettanto bene dell'applicazione web. Con l'aumento delle tecnologie RIA come Silverlight, il divario si è ridotto ulteriormente.

Si noti che non sto sostenendo tutte le applicazioni desktop qui, in alcuni casi sarà necessario un client FAT completo.

    
risposta data 30.12.2010 - 11:53
fonte

Leggi altre domande sui tag