title: What's the difference between implementation, api and compile in Gradle?
body: <p>After updating to Android Studio 3.0 and creating a new project, I noticed that in <code>build.gradle</code> there is a new way to add new dependencies instead of <code>compile</code> there is <code>implementation</code> and instead of <code>testCompile</code> there is <code>testImplementation</code>.</p>
  
  <p>Example:</p>
  
  <pre><code> implementation 'com.android.support:appcompat-v7:25.0.0'
   testImplementation 'junit:junit:4.12'
  </code></pre>
  
  <p>instead of</p>
  
  <pre><code> compile 'com.android.support:appcompat-v7:25.0.0'
   testCompile 'junit:junit:4.12'
  </code></pre>
  
  <p>What's the difference between them and what should I be using?</p>