The question is not whether "java" has those methods. That's not even a meaningful question. If you are using an implementation of a stack, then the question is whether that implementation -- in particular the class which implements a stack -- has those methods. Which it should, if it's implementing a stack.
However if you are designing an implementation of a stack, then you should design the class so that it does have those methods.
And that Stack is terrible. Instead of using a Vector (a legacy class that should usually not be used) internally it instead extends it. Very bad design indeed. You should use a Deque instead; it even mentions this:
This interface should be used in preference to the legacy Stack class.
There is just one thing I would change: instead of using addFirst, removeFirst and peekFirst I'd use addLast, removeLast and peekLast. It's rarely more efficient to add elements to and remove elements from the start; best case (LinkedList) it's just as efficient, worst case (ArrayDeque) the entire internal structure needs to be reorganized. By working at the end you prevent this.
Hmmm. ArrayDeque is implemented differently than I expected. It in fact doesn't make a difference, just like LinkedList. So it doesn't matter at all from which side you work.