Most of the application features that could be imagined can be developed without use of Java Steps if we adhere to best practice. Seems very much like being in perfect world but its true.
However Pega Application developer do commit design mistakes and do not adhere to PRPC guardrails and sometimes refraining from Java Steps becomes difficult as revisiting the design scratch is time consuming.
Coming to performance, it depends what we are doing in Java Steps. If we are accessing a long running sql query or parsing a very large text file or any other possible resource consuming operation, it will have possible impact.
Though not recommended, you can use Java step for simple operation in case there is no other feasible way.