title: Java Class scope and library
body: <p>I am creating a Java library, as a final product in intend to distribute this .jar to developers.</p>
  
  <p>I am "translating" my library from Objective-C where I control which classes header files are available to the developer. In other words I am only exposing to the developer a few classes they can handle.</p>
  
  <p>In my Java library I am using packages and my package has grown quite big. So I decided to separate into different packages my models and controllers. But now the models I wanted to keep private I need to mark as public in order to use from the main package.</p>
  
  <p>My question is does this go against what I was doing in Objective-C ?</p>
  
  <p>For example I have an Event class which is really only used internally and I don't want the user to know about it or think about it. I have another class TimedEvent, which the user can get an instance of an manage. </p>
  
  <p>In my Objective-C, I simply excluded Event class from the library public scope, allowing TimedEvent.</p>
  
  <p>If I am making things more tidy in my library then it seems packages aren't the way. Since now, my main controller is in the main package and all the models are in another package - forced to have a public scope.</p>
  
  <p>Opinions ?</p>