Hello, when I compare Ruby to Java there is something I don't understand  .

For example, let say that I create instances of JDBCFooBaseDriver in 
Java - The methods and their behaviors will never change, unless I 
update JDBCFooBaseDriver jar file. I can be sure that this part of my 
environment will stay the same even if new third party libraries are 
added and used by my application.

Now, in Ruby I can use a new library (FancyDates) that will alter the 
behavior of some JDBCFooBaseDriver methods - Some methods of 
JDBCFooBaseDriver will be redefined by FancyDates and new methods will 
be added - All this stuff will occurs without giving me a chance to be 
informed of what is going on under the scene.

So,

1) Is what I say right ?
2) Why should I not be scared by that ?
3) Why most C#, Java, C++ developper thinks that this approach is 
dangerous and lead to bad practices ?

Thanks

If this question have been answered many times, feel free to only 
provide some links to references.