Supponendo "codice / architettura pulita" c'è una differenza nello "sforzo" tra lo sviluppo di applicazioni web PHP o Java / J2EE? [chiuso]

7

Un cliente ci ha chiesto di stimare gli sforzi quando selezionavamo PHP come linguaggio di implementazione per la sua prossima applicazione web-based. Abbiamo trascorso circa una settimana esplorando PHP, prototipazione, test, ecc. Siamo abbastanza nuovi in questa lingua, forse ci siamo passati in giro in passato, ma andiamo con i noobs di PHP ma con esperti di sviluppo di applicazioni (per la mancanza di una soluzione migliore, parola meno lusinghiera:)

Sembra che se scriviamo, puliamo codice manutenibile, seguiamo la separazione delle preoccupazioni, schemi di architettura aziendale (DAO ecc.) lo "sforzo" nella creazione di un'applicazione web basata su oggetti basata su PHP sembra essere lo stesso per un Uno basato su Java.

Ecco la nostra equazione per stimare lo sforzo (sviluppo / tempo di consegna):

ConstructionEffort = f(analysis, design, coding, testing, review, deployment)

Abbiamo confrontato in modo specifico le stime dello sforzo nella creazione di un'applicazione enterprise con quanto segue:

  1. PHP + CakePHP / CodeIgniter (dovremmo averne considerati altri?)
  2. Java + Spring + Restlet

È un'applicazione end-to-end:

  1. Cliente: Javascript / jQuery + HTML / CSS
  2. Livello intermedio / Business logic - (Valutazione ancora PHP / Java)
  3. Database: MySQL

Le stime dello sforzo del 1 ° e 3 ° livello sono costanti e relativamente indipendenti dalla tecnologia del livello intermedio. A un livello elevato con una scomposizione iniziale nelle user story delle funzionalità richieste e un SWAG di alto livello sul numero puro di classi / SLOC che sarebbero necessari per PHP non sembra differire molto da quanto richiesto da lo stesso in Java. È corretto?

Basiamo le nostre stime iniziali sulla prototipazione / codifica iniziale che abbiamo fatto con PHP - al momento stiamo trascurando la fluidità con la lingua come fattore, poiché questo sarà un ostacolo iniziale e non un ostacolo a lungo termine IMHO ( abbiamo anche tempo sufficiente per diventare abbastanza fluenti con PHP).

Sono interessato a conoscere la prospettiva dei programmatori rispetto all'impegno nella creazione di applicazioni simili con entrambe le lingue per giustificare la scelta dell'uno sull'altra. Ci manca qualcosa qui? Sembra che stiamo andando contro la credenza popolare del fatto che PHP sia più veloce sul mercato (o se siamo molto fluenti con Java la nostra visione è annebbiata). Non sembra che lo sforzo di programmazione / programmazione sia risparmiato da quello con cui abbiamo giocato.

    
posta PhD 11.02.2012 - 21:05
fonte

5 risposte

5

La tua risposta: No affatto

Ho una vasta esperienza con PHP e Java e posso dirti che se conosci bene il PHP e non sei un noobie totale e sai che PHP può fare classi, interfacce (e presto anche i tratti per il riutilizzo orizzontale) , eccezioni, caricamento automatico della classe, ecc., il tuo codice PHP può sembrare migliore del codice Java e funziona anche meglio.

Non credermi ?, controlla il framework Symfony per vedere (IMHO) il miglior software di architettura PHP disponibile, guarda il suo manuale per esempi di codice.

Il vero problema dietro PHP

Noobies, script kiddies e programmatori mediocri ... ce ne sono molti, e tutti sembrano rivolgersi a PHP per essere troppo facili. PHP è davvero troppo facile, e non è una brutta cosa (incolpare l'eccellente documentazione linguistica).

Ogni lingua ha i suoi difetti e, in effetti, uno dei linguaggi più imperfetti è javascript, e guarda dove è ora (suggerimento: ovunque).

Alcuni dei vantaggi nella selezione di PHP

  • Mercato più ampio ed economico per gli sviluppatori. Cerca gli sviluppatori PHP con background OO e una buona attitudine all'apprendimento se scegli Symfony (non te ne pentirai, specialmente a causa della Dottrina , utilizza ORM Symfony), ma c'è una curva di apprendimento (più piccola di quanto appare, a volte sembra grande).
  • Servizi di hosting più economici.
  • Più facile configurare il tuo ambiente di sviluppo e di produzione.

Quindi lo sforzo potrebbe essere lo stesso, ma i vantaggi precedenti sono ciò che lo separa da Java, e sono sicuro che ce ne sono altri.

    
risposta data 12.02.2012 - 05:29
fonte
1

Non ho familiarità con gli studi formali riguardanti lo sforzo e la produttività di PHP e Java esplicitamente - la maggior parte del lavoro esamina lingue di diverse generazioni . So che Java è una lingua di terza generazione , e sono abbastanza sicuro che PHP sia anche un terzo linguaggio generazionale. Ciò significa che, a parità di altre condizioni, lo sforzo intrinseco necessario per produrre lo stesso prodotto con entrambe le lingue è abbastanza vicino da non avere un impatto significativo sul progetto.

Tuttavia, è stato dimostrato che la conoscenza dei linguaggi di programmazione indica una differenza di produttività di 1,20. È uno dei fattori minori: la capacità del team, la complessità del progetto, persino gli strumenti utilizzati hanno un impatto molto maggiore sulle prestazioni del progetto rispetto ai linguaggi di programmazione.

Quindi, in breve, la scelta del linguaggio di programmazione avrà una differenza di produttività. Tuttavia, è una delle differenze più piccole. Sarei molto più interessato agli altri aspetti del progetto.

Se ti interessa di più, esaminerei strumenti come COCOMO e SLIM e le ricerche di base che sono state apportate. Questi strumenti di modellazione stimati consentono di tenere in considerazione le conoscenze e le capacità in diversi aspetti dei progetti e determinare in che modo influiscono sulla pianificazione, il budget e i livelli di impegno / produttività.

    
risposta data 11.02.2012 - 21:50
fonte
1

Ci vorrà meno tempo per sviluppare un'applicazione in PHP , ma, molto probabilmente, non sarà abbastanza coerente dal punto di vista architettonico e, quindi, avrà più bug. Ciononostante, il costo della modifica dell'applicazione PHP sarà inferiore rispetto all'applicazione Java.

D'altro canto, l'applicazione Java richiederà più tempo per progettare e sviluppare, ma sarà più robusta e coerente. Molto probabilmente avrà meno bug, ma sarà più difficile implementare le modifiche.

Anche se potrebbe sembrare che le lingue siano uguali nei termini di stima del tempo e degli sforzi, non è vero. Dipende davvero dal dominio specifico dell'applicazione se sarà bene usare PHP o Java. La lingua non importa, la tecnologia lo fa. E ci sono tecnologia PHP e tecnologia Java. Questo è ciò di cui hai davvero bisogno di prendere in considerazione perché sia la tecnologia PHP che la tecnologia Java non possono essere applicate ad alcuni domini specifici a causa delle specifiche della tecnologia del linguaggio. Ad esempio, non proverei mai ad applicare le tecnologie PHP per l'elaborazione del linguaggio naturale. Mentre sarebbe un overhead sviluppare un semplice pannello di amministrazione in Java.

Il dominio dell'applicazione è ciò che conta davvero.

    
risposta data 11.02.2012 - 22:29
fonte
0

In generale, sarai più produttivo in una lingua / struttura che conosci bene. Questo sarà probabilmente un fattore di produttività maggiore rispetto a qualsiasi differenza intrinseca tra linguaggio / framework.

Per quanto riguarda le lingue particolari che stai considerando.

  • PHP è adatto per siti Web veloci e dinamici. È qui che PHP ha le sue radici.
  • Java è migliore per le applicazioni aziendali più robuste che devono essere mantenute / sviluppate a lungo termine

Vale la pena notare che la piattaforma Java (che puoi considerare separatamente dalla lingua) è estremamente potente con probabilmente il miglior GC del mondo, una compilation JIT eccezionale e un enorme ecosistema di librerie e strumenti. A lungo termine, questa sarà probabilmente una scelta strategica più interessante per applicazioni serie.

Dato che suona come se avessi già competenze di piattaforma Java ma non conosci veramente PHP, sceglierei sicuramente Java su PHP per la tua implementazione di livello intermedio. Se sei interessato all'elevata produttività, potresti anche prendere in considerazione:

  • Linguaggi JVM dinamici come Groovy o Clojure: offrono tutta l'alta produttività dei linguaggi dinamici moderni con i vantaggi di essere ben integrati nella piattaforma Java.
  • I moderni framework web Java come Play o Vaadin - I nuovi framework IMHO sono molto più produttivi di J2EE. J2EE è probabilmente eccessivo a meno che non si stia costruendo un'applicazione enterprise mission-critical.
risposta data 12.02.2012 - 10:21
fonte
-1

Risposta rapida breve

PHP, è facile e amp; veloce per la prima volta, ma, se diventa complicato quando gli aggiornamenti di codice sono fatti. Inizialmente, Java potrebbe sembrare complicato, ma aiuterà le cose più tardi.

In entrambi i casi, considerate, non solo il progr. Lang. più framework, anche, specialmente se si va su PHP.

    
risposta data 12.02.2012 - 01:09
fonte

Leggi altre domande sui tag