There is no reason to not use java for a tiled 2D game based on the idea that a Java implementation will exhibit "lag" but a C++ implementation will not.
I would rather use C or C++ because memory management and speed can be improved based on how well you code than if you use Java and I want to think of this project as training to build good habits like ways to make the game run faster, with less lag, etc.
If you want to write in C++ then write in C++ but don't delude yourself into thinking you are doing so for performance reasons. Beginners more or less will never see the speed difference between C++ and Java. If you write a Java game and it runs slowly, it is probably because you wrote it poorly not because of the language you chose. Likewise, C++ will not magically make a game run fast; in fact, if written poorly it will run really slow i.e. nothing is slower than crashing.
The difference between C and C++ is not a difference in syntax. They are radically different languages. If you treat C++ as C with some syntax differences you will write bad C++.
I am already familiar with C and I think C++ should be simple to pick up (just syntax differences I'm sure)
So you want to use C++ but not use libraries? ... Beginners tend to have a warped view of what making something "from scratch" means.
The reason I want to make it from scratch is because this will provide a greater learning experience than using something that already has thousands of libraries built into it