This is why i'm thinking about "migrating" to Java, but I would still like to be treated like a worker with some experience and not just a weight.
I'm still open to learn new languages and try to master them, for example I did many little projects in Java, but every job opportunity wants a developer who already worked with it for years and when they don't pretend it, it's because they want to pay you like someone who never worked and even if I don't have experience with one programming language it doesn't mean that the experience taken with the older jobs is useless.
The thing is that when it comes to Java you are essentially on zero experience. Yes it is remarkably similar to C# in many ways and yes it is fairly easy to "migrate" as you put it between the two languages but that doesn't completely eliminate the learning curve, it only gives you a head start so there's no way you would be considered experienced for a Java role - neither would I and I've been developing commercially in C# for ~ 15 years, and I've got a year of Java at university under my belt as well. As the saying goes there is just no substitute for experience.
If you want to get yourself into a Java role then your best bet is to do what you have been doing - learning the language now. Do as much as you can in it as your free time allows and publish anything you can to a github account (or similar) and then you will have some language knowledge and proof of that available to any recruiters for Java positions. Not to mention of course it will give you a chance at passing technical tests. Perhaps get involved in some open-source projects?
Even with doing all of the above though you are going to really struggle to get anything more than a junior or more likely entry-level position. Self-learning and hobby experience definitely has some value but it's never going to be considered the same as actual commercial experience because they are very different environments. Commercial work is always going to be driven by real-world business requirements which are extremely difficult to replicate in a hypothetical environment and you have to remember that commercial work will have deadlines, other stakeholders and overall much higher pressures then home learning.
I want to be a backend programmer, while a lot of job opportunities look for a fullstack developer
There are back-end focused roles out there but as you've discovered full-stack positions are by far more common, I'm a back-end developer myself by preference and if Italy is anything like the UK you'll find opportunities to do pure back-end work few and far between. Having recently been on the hunt for a new contract back-end heavy roles made up less than 10% of those on the market and even then most had full-stack elements to them. There's nothing wrong with looking for back-end roles by preference but you need to be realistic about the amount that this will narrow your field.
I have logistic problems, considering that I don't have a car and a lot of companies are located out of my city which means 1 or 2 hours of public transports every time that I have to move
I fully sympathize with this (speaking as someone who lives in a locale that has negligible tech jobs) but there's not much for it other than to deal with the long commutes or move. In your case it sounds like perhaps getting a car might be an avenue worth pursing as this will vastly open up the places you can get to and therefore jobs you can apply for.