• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Which technologies for stock analysis web application?

I'm trying to build stock analysis web application. In this app you can register and have your own profile where you can save your favorite stocks chart, do papertrading etc. The main functionality will be that you can open any stock,commodity chart by entering their symbol, after that I want to show interactive real time chart where you can draw trend lines, add indicators like moving average or volume. Free data will be used from Yahoo finance or Google Finance.

I have beginner knowledge only in Java SE,EE, but I'm willing to learn new technologies in the process of development. So I would like to use Java for back-end, but I dont know what to use for front-end and database layer.

So which technologies would you recommend to me? What would you use for displaying charts? What for database? I'm thinking Spring MVC + Angular.... thoughts?

-thank you.
I'm heavily a .NET guy atm for my day job so I can't comment on the Java landscape. That said, looking at Spring, it seems directly comparable to WebApi2 (or my preferred option, ServiceStack), in terms of the MVC framework.

So.. I would say that by trying to mix MVC templating and Angular, you are probably making your life difficult. MVC is predominantly a server-side rendering tool, whereas Angular (react, vue, etc etc) move all the UI parsing/rendering etc, to the browser. Yes, you can have MVC serve the template files that Angular would then use to build up your UI... but why bother. Pick one or the other.

I used Angular 1.5 for a while, and it was sparkly and cool, but for my next side project I'm actually tempted to jump back into a more raw framework.. use MVC + server side rendering to handle most of the page display, and jQuery and jQuery UI to do any dynamic data load / rendering. The reasons are many, and I don't want to rant here... just dig around a few forums and you'll find plenty of pro-vs-con opinion pieces on why any particular JS framework should/should not/could be/should never ever be used... then, ignore all that shit, and just start doing something. Like I had to learn myself, (after too long a time), 80% of anything is almost certainly better than 100% of nothing. Ignore "scaling" and "microservices" and "doing it the right way" at the start. You'll rewrite absolutely everything a number of times anyway, as your requirements change and your skills grow. Do NOT rewrite stuff for the sake of theory... be ruthless and focus on producing - the same way you would have to if you had a client kicking down your door every week asking "where is my next feature". Get shit done, see what works and what new features you need, and add little bits at a time.

Read up on good API design (and know that you'll get it wrong initially anyway, and that's okay).

Learn how to write sweeping end-to-end integration tests, and if you're clicking through your UI each time to test a new feature, instead of firing off an integration test, then you're making your life difficult. Again, its a .NET framework, but the code will be readable to you as a Java dude:

HowTo write unit integration tests · ServiceStack/ServiceStack Wiki · GitHub

Side Note: follow Mythz on stackoverflow, and you'll get plenty of examples of the "get it done, dont do anything you dont need until its needed" philosophy.. Mythz produces a fearsome amount of features and a well regarded product, and happily shares a lot of his code-design ideas.

D3 is probably THE charting / data rendering library in the browser, but its also not the easiest to get to grips with as a beginner I believe.

For the DB... and what you're describing, I'd stick with a traditional relational database (MySQL, SqLite etc), rather than a NoSQL solution (which, frankly, I dislike in general). If anyone tells you you need MongoDB, "so you can scale", beat them. I like type-safe, compile-time languages, clear data relationships and for things to break hard, so I can SEE when there are errors in my code/logic/approach...