The biggest problem of using c++ is libraries . recently I plan to use websocket, hard to find c++library
Syntax easier, lesser lines of code required, data manipulation easier. More data related libraries. That being said, I have never done data manipulation stuff in Java before (only used Java for school related stuff in my CS deg. Not an expert).
To a degree it's about language comfortability. I prefer static languages (e.g. C++, Java, C#), but it takes a good IDE to code in them quickly, e.g. Visual Studio w/ Visual Assist. But I can't deny Python can lead to shorter (and hence potentially faster to write) code, however the advantage of that comparatively disappears for very large codebases where the availability of compile time information starts mattering more IMO. Of course there are plenty of solutions that try to address that problem for Python and I haven't been using them much so I am not in the position to make a neutral judgement. HOWEVER there are so many Python libraries aimed for finance, science, and maths that aren't available in C++. If you need those, Python is a far superior choice. There are ways to access such from C++ of course but that goes through extra hoops. Java is increasingly getting into a similar position versus Python.
Fluent in both Java and Python here, although I have a much longer history with Java so bear that in mind... I would say they are pretty similar and it doesn't really matter. Your tenacity as a beginner will be much more important to your success. As mentioned by a previous poster, you may find Python easier for analytics work, particularly using Jupyter/Pandas. Java will offer a wider range of choices (libraries, frameworks, etc) that a beginner may have to wade through. For example: choosing an ORM. In Python, you're basically choosing SQLAlchemy. As mentioned elsewhere, Java is statically typed. This can be useful for a beginner, particularly if you choose a good IDE for development (i.e IntelliJ or Eclipse). Java also has stronger support for multi-threading. In Python, you're generally looking at setting up multiple processes, if you want to take advantage of a multi-core CPU. For myself, I've gone with Java, specifically Vert.x and the EBean ORM connecting to the IB API. I started this before IB released their own Python API, however. If I was to start again in Python, I'd look at Tornado, RxPY, and of course SQLAlchemy. Some of the asyncio libraries connecting to Postgres also look pretty interesting.
When I started developing back in 2008, I benchmarked TALib Java compared to C++. I found that the execution speed of the C++ code was faster compared to Java, but not by a huge amount. (By the way, JVisualVM for Java is a far better profiling tool than anything I have found in Visual Studio.) I figured I could take advantage of the more developed multithreading in Java if I ever needed more speed. But the main factor for me was development efficiency. I just find it easier to write code in Java vs. C++ and I program with both almost every day. I'll use Java any time I can over C++. C++ just has a lot of ugly parts carried over from the 80s and early 90s that should have been evolved away by now. With Java, I simply throw all my source into the IDE and the IDE figures out how to compile it. Not the case with C++. You have to be careful about the order of include statements and the need to maintain a header file separate from the implementation file...it just sucks. Plus the syntax is a lot cleaner with Java. I looked at Python many years ago and I don't like the syntax. It's not as bad as Perl, but not nearly as elegant IMO as Java. The other reason I went with Java was the IDE. Eclipse is made for the language whereas Visual Studio seems to be made more for C# than C++...of course, that's the language Microsoft wants you to use. Then there's the availability of 3rd party libraries. I ended up making a lot of graphical displays and most were built on JFreeChart. Although I eventually made my own charting library, I borrowed a lot from JFreeChart. There's probably an equivalent library for C++, but not sure what it is. Even Java's built-in Swing library is good enough for me. I think making similar graphical displays in C++ would be more difficult. TLDR: Go with the language that you think you will be most productive with. I ended up abandoning probably 98% of the code / ideas I have written over the past decade. Practice good design, but don't spend any time on optimization until you know you need it. If you need more speed later, you can code that part in C++ or optimize the Java. Odds are you probably won't need it.
Definitely agree with everything you said here. Just adding that Visual Assist is what makes coding in C/C++ pleasant, speeds up the programmer 2-3 times. Ironically that's due to providing features that IMO should be in all IDEs: Near instant symbol look up, references look up, text search, etc. Whereas default Visual Studio struggles with the C/C++ complexity and has unbearably slow (and erroneous) symbol look up. Also, when using memory handling features of the newer C++ releases you get away from the nasty heap corruption issues plaguing code that uses new/malloc/delete/free. So while I used to hate C++ a decade ago and went as far as declaring it a doomed language, it's pretty neat now. The old stuff is still there in the language and confuses newbies though, a bit like all the noise about how you just need to add the right magic indicator to your screen in trading to become successful hurts newbie traders.