# Why Ruby has 2 APIs(Ruby Core API&Ruby Standard API)?

**URL:** <https://www.ruby-forum.com/t/why-ruby-has-2-apis-ruby-core-api-ruby-standard-api/114913>\
**Category:** Rails\
**Created:** [September 18, 2007, 7:28pm UTC](https://www.ruby-forum.com/t/why-ruby-has-2-apis-ruby-core-api-ruby-standard-api/114913 "2007-09-18T19:28:18Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rubynut](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8e8cbc/32.png) [@rubynut](https://www.ruby-forum.com/u/rubynut)\
**Post date:** [September 18, 2007, 7:28pm UTC](https://www.ruby-forum.com/t/why-ruby-has-2-apis-ruby-core-api-ruby-standard-api/114913/1 "2007-09-18T19:28:18Z")

</div>

first question as titled.

otherwise, what’s their relationship?? i had confuse about it.

and what’s the building package and class (do need to “require”, like  
java.lang.\* in Java )? how do i know it?

---

<div class="post-metadata">

**Author:** ![rubynut](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8e8cbc/32.png) [@rubynut](https://www.ruby-forum.com/u/rubynut)\
**Post date:** [September 18, 2007, 7:44pm UTC](https://www.ruby-forum.com/t/why-ruby-has-2-apis-ruby-core-api-ruby-standard-api/114913/2 "2007-09-18T19:44:20Z")

</div>

I mean

“require” no need, just like  
java.lang.\* in Java

---

<div class="post-metadata">

**Author:** ![rubynut](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8e8cbc/32.png) [@rubynut](https://www.ruby-forum.com/u/rubynut)\
**Post date:** [September 18, 2007, 8:07pm UTC](https://www.ruby-forum.com/t/why-ruby-has-2-apis-ruby-core-api-ruby-standard-api/114913/3 "2007-09-18T20:07:26Z")

</div>

On Tue, 18 Sep 2007, Ruby N. wrote:

> I mean
> 
> “require” no need, just like  
> java.lang.\* in Java
> 
> On Sep 19, 1:27 am, Ruby N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > first question as titled.
> > 
> > otherwise, what’s their relationship?? i had confuse about it.

Classes and modules in the core are available without doing require.  
Classes and modules in the standard library are brought in with require,  
but there is not a one-to-one mapping like in Java. You can require a  
file that defines 3 modules and 2 classes, for example.

> > and what’s the building package and class (do need to “require”, like  
> > java.lang.\* in Java )? how do i know it?

You need to read the documentation for each library that you use, to  
know it.

If you are coming from java there are resources for people taking that  
route, including a book. I have not read this book:

[http://www.pragmaticprogrammer.com/title/fr\_j2r/](http://www.pragmaticprogrammer.com/title/fr_j2r/)

Search google: ruby for java  
It turns up many pages.

```
    Hope this helps,
    Hugh

```

---

<div class="post-metadata">

**Author:** ![rubynut](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/8e8cbc/32.png) [@rubynut](https://www.ruby-forum.com/u/rubynut)\
**Post date:** [September 18, 2007, 8:26pm UTC](https://www.ruby-forum.com/t/why-ruby-has-2-apis-ruby-core-api-ruby-standard-api/114913/4 "2007-09-18T20:26:30Z")

</div>

huh??

for example, “PP”, i can find this package in both APIs. but need  
“require”, so i still confuse. \>"\<

arr = [“apple”, “orange”, “watermelon”]  
pp arr  
#=\> hello.rb:4: undefined method `pp’ for main:Object (NoMethodError)

require “pp”  
arr = [“apple”, “orange”, “watermelon”]  
pp arr  
#=\>[“apple”, “orange”, “watermelon”]
