title: why is ftp upload slow in java 7
body: <p>I wanted to ask if anyone knows about any Java 7 issues with FTP? I've used both the Sun Net and Apache Commons Net libraries and both perform as expected on Java 6. But when I switch my dev environment (Eclipse) to 1.7, the same operations perform really slow (about 4.5 to 8KB/s), and these are to localhost servers and another server within the LAN.</p>
  
  <p>I've tried buffered streams, byte-to-byte transfer, turning the Nagle Algorithm off, and using the Apache convenience method storeFile(), with the latter finally performing to speed on localhost but slowing down again to a crawl on a remote server. I also set all machines to turn off stateful FTP filtering.</p>
  
  <pre><code>    InputStream is = null;
      OutputStream os = null;
      try {
          is = new BufferedInputStream(prepareInputStream(data));
          os = new BufferedOutputStream(prepareOutputStream(data));
          if (is == null || os == null) {
              log.error("Can't build connection");
              return;
          }
  
          byte[] buf = new byte[4096];
          int c = 1;
  
          while (c &gt; 0) {
              c = is.read(buf);
              if (c &gt; 0)
              os.write(buf, 0, c);
              data.incrCurrentPosition();
              fireStateChanged(data);
          }
          data.incrCurrentPosition();
      } catch (IOException e) {
          log.error(e.getMessage(), e);
          setEnabled(false);  
      } catch (Exception e) {
          log.error(e.getMessage(), e);
      } finally {
          if (is != null) {
              try {
                  is.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          if (os != null) {
              try {
                  os.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
  </code></pre>
  
  <p>As can be seen, this is pretty standard implementation code. Again, in Java 6, things zip by really quick. In Java 7, it slows down by a factor of 10 to 20 for both the Sun and Apache Commons libraries. Using an FTP client like FileZilla confirms that FTP is functioning normally, so I think it really has something to do with Java 7. I dug as far as I could online for any mention of a problem but, mostly, the things I saw were about the Java 7 and Windows 7 firewall conflict.</p>
  
  <p>Thanks in advance for any insight given.</p>