Sono necessari molti più dettagli di quelli che fornisci per rispondere adeguatamente a questa domanda.
Le tecnologie che utilizzi saranno guidate dalle tue esigenze specifiche, sia funzionali che non funzionali. Quindi, per sapere cosa si adatta meglio alle tue esigenze, devi eseguire l'ingegneria dei requisiti. Scopri esattamente cosa vuole l'utente finale, e quindi avrai un'idea migliore di quali strumenti puoi utilizzare per arrivare da dove sei ora dove devi essere. Ma è importante concentrarsi sugli attributi di qualità e sui requisiti non funzionali in quanto sono i requisiti funzionali.
Se non hai mai fatto ingegneria dei requisiti, ti consiglio vivamente di leggere i lavori di Karl Wiegers. Ha pubblicato due libri chiave: Requisiti software e Ulteriori informazioni sui requisiti software . Il primo libro è stato richiesto durante la lettura del corso di ingegneria dei requisiti del software. Wiegers ha anche un sito web chiamato Impatto sui processi , che potrebbe avere alcune risorse e informazioni utili.
Una volta soddisfatti i requisiti, sarà molto più facile determinare quale stack tecnologico può risolvere al meglio i tuoi problemi.
Tuttavia, ho alcuni suggerimenti per te, nel frattempo:
Hai esperienza con Java, quindi attaccare con l'ambiente Java è probabilmente una scommessa sicura. Non usare una tecnologia per risolvere tutti i problemi che ti capitano solo perché sei familiare e ti senti al sicuro, comunque. Assicurati che possa effettivamente risolvere i problemi che stai cercando di risolvere. Altrimenti, stai solo creando più lavoro per te stesso e per chiunque altro debba mantenere il tuo software.
Indipendentemente dalla soluzione scelta, la società si aspetta la documentazione. A seconda dei termini di lavoro, ci si aspetta almeno che forniscano istruzioni su come distribuire il software e poi le istruzioni su come l'utente finale può effettivamente utilizzare il sistema che hai creato. Tuttavia, ci sono molte altre cose che devono essere documentate, come i requisiti concordati, il design o lo stato finale di implementazione quando lo si rigira, i report dei difetti, i report orari e così via. Assicurati di sapere cosa devi consegnare, oltre al software di lavoro.
In termini di database, puoi scegliere tra server di database (come MySQL e PostgresSQL) e database incorporati (come SQLite e HSQLDB). Esistono anche soluzioni NoSQL (come Hadoop) per gli archivi di dati. Potresti voler esaminare le capacità di ciascuno e vedere come puoi soddisfare al meglio le tue esigenze. Potrebbe essere necessario distribuire entrambi, anche, a seconda dei requisiti specifici. Tuttavia, non puoi scegliere finché non hai i requisiti.
Indipendentemente dal database che utilizzi, probabilmente dovrai stare tranquillo con cose come JDBC e vari livelli ORM. Se decidi di seguire il percorso delle app Web, dovrai essere familiare e scegliere tra Struts, Spring e una serie di altri framework per applicazioni web. Siate pronti a valutare un numero di strumenti, librerie e framework in competizione con le vostre esigenze. E non aver paura di buttare via le cose. Credo che sia stato un suggerimento in The Pragmatic Programmer - piano di buttarne via uno. Farai degli errori e dovrai imparare da quegli errori durante questo progetto. Ti aiuterà a lungo termine.
Quindi, in breve, scopri esattamente cosa devi costruire prima ancora di provare a pensare alle tecnologie. Dato il tuo post, non fornisci informazioni sufficienti a qualsiasi ingegnere ragionevole per dare suggerimenti. E se non sai o non puoi specificare cosa stai costruendo con un altro ingegnere, non è possibile costruirlo.