<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaProNews</title>
	<atom:link href="http://www.javapronews.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javapronews.com</link>
	<description>Just another DevWebPro Network site</description>
	<lastBuildDate>Tue, 15 May 2012 13:28:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Google Fined $150K in Oracle Case</title>
		<link>http://www.javapronews.com/google-fined-150k-in-oracle-case/</link>
		<comments>http://www.javapronews.com/google-fined-150k-in-oracle-case/#comments</comments>
		<pubDate>Tue, 15 May 2012 13:25:58 +0000</pubDate>
		<dc:creator>Mike Fossum</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6638</guid>
		<description><![CDATA[It was recently reported that Oracle might only be able to collect $150,000 in fines from Google, for infringing upon its Java APIs in the the development of the Android operating system, and now presiding Judge William Alsup confirmed these damages. A billion dollars has been a sort of buzz-phrase &#8230;]]></description>
			<content:encoded><![CDATA[<p>It was recently reported that <a href="http://www.webpronews.com/google-trial-may-only-net-oracle-150000-2012-05" target="_blank">Oracle might only be able to collect $150,000 in fines from Google</a>, for infringing upon its Java APIs in the the development of the Android operating system, and now presiding Judge William Alsup <a href="http://www.electronista.com/articles/12/05/10/if.needed.oracle.wants.retrial.limited.to.fair.use/" target="_blank">confirmed</a> these damages. A <em>billion dollars</em> has been a sort of buzz-phrase surrounding the tech industry as of late, with Facebook’s recent acquisition of Instagram for a <em>billion dollars</em>. Some have said Oracle might also get a billion dollars from Google per inflated fines, but as the case continues to play out, it would appear that the makers of Java will not only fail in achieving a billion, but might also fail to save face, in a case exhibiting an undertone of corporate hubris.<br />
<span id="more-6638"></span><br />
So far, Google has only been found to have infringed upon 9 lines of rangeCheck code found in TimSort.java and ComparableTimSort.java – 9 lines out of the 15 million that comprise Android, which equates to one count of infringement. While Oracle asked Alsup to rule on fair use, Google likewise requested a mistrial. By statute, the 9 lines of code in question can only garner a maximum fine of $150,000, which Judge Alsup confirmed today.</p>
<p>There has yet to be a ruling on Google’s bid for a mistrial, and Oracle today filed to divorce from the portions of the case already heard, a motion likewise still up in the air. The next phase of the trial will likely surround further classification of the 37 Java APIs in question, a ruling on whether or not any of them are actually copyrighted, which would lead to a better look at the issue of fair use.</p>
<p><a href="http://www.webpronews.com/google-fines-limited-to-150k-in-oracle-case-2012-05">Comments</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/google-fined-150k-in-oracle-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Closing Arguments For Google VS. Oracle Trial</title>
		<link>http://www.javapronews.com/closing-arguments-for-google-vs-oracle-trial/</link>
		<comments>http://www.javapronews.com/closing-arguments-for-google-vs-oracle-trial/#comments</comments>
		<pubDate>Tue, 01 May 2012 15:41:59 +0000</pubDate>
		<dc:creator>Mike Fossum</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6634</guid>
		<description><![CDATA[The trial of Oracle’s lawsuit against Google, who is suing over patent infringement regarding the use of Java in the building the Android OS, finally commenced roughly two weeks ago – 18 months after Oracle’s initial complaint – and now the closing arguments of the first phase of the court &#8230;]]></description>
			<content:encoded><![CDATA[<p>The trial of Oracle’s lawsuit against Google, who is suing over patent infringement regarding the use of Java in the building the Android OS, <a href="http://www.webpronews.com/google-oracle-trial-begins-today-2012-04" target="_blank">finally commenced</a> roughly two weeks ago – 18 months after Oracle’s initial complaint – and now the closing arguments of the first phase of the court proceedings were winding down this morning, with Oracle <a href="http://www.zdnet.com/blog/btl/oracles-closing-arguments-google-is-making-excuses/75750?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+zdnet%2FBTL+%28ZDNet+Between+the+Lines%29" target="_blank">asserting</a> that Google has been plainly making excuses about illegally manipulating Java APIs during the development of the Android OS.<br />
<span id="more-6634"></span><br />
Oracle attorney Michael Jacobs stated in the U.S. District Court, “this is a trial between large companies over really important business issues, and sometimes the numbers involved have been staggering – You will see email after email in which Google executives knew this day would come.” It’s not clear if Jacobs was referring to a staggering number of emails, actual copyright violations committed, or if he was speaking of the real issue – the potential of a billion dollars in fines Google might have to fork over.</p>
<p>Oracle has always contended that the Java APIs used by Google are so intricate that they could be considered to be a protected creative work. Jacobs somewhat dramatically described said Java APIs as being akin to a musical composition, – “It’s magical. It’s like painting.” Google has always said that none of this mattered, as Java falls under fair use, and has claimed that the lawsuit was <a href="http://www.webpronews.com/googles-reponse-to-the-oracle-suit-2010-08" target="_blank">an attack on open-source Java content from the start</a>. Jacobs asserted that Google has been using this sort of thing as a cop out, and was well-aware that their manipulation of Java might’ve gone beyond what open-source was intended for – which seems to go along with reports of <a href="http://www.webpronews.com/googles-page-remains-evasive-with-oracle-attorney-2012-04" target="_blank">Google CEO Larry Page’s demeanor as he’d taken the stand</a>. Page remained elusive when asked about any company emails concerning the APIs, plainly stated that he “didn’t remember.”</p>
<p>Earlier speculation that Oracle might demand that Google change the Android code altogether were far-fetched – the company wants Android to get a license for Java, and to admit they essentially stole the APIs, since they were aware a license would be required in the first place. It would appear Google might’ve taken a gamble, lost, and now might have to plainly pay for what it would’ve had to pay for in the first place, sans any court proceedings. Android exec Andy Rubin even testified that Google wanted Sun (the developer of Java before Oracle took over) to “throw away their standard license,” and “develop a new license that was specifically what we’re looking for.” Then Rubin turned around and stated that Google didn’t think they needed a license.</p>
<p>Presiding Judge William Alsup predicts the jury might be back within the next couple of days. This will be interesting – If Google loses, the trial will eventually progress to the stage where fines are handed out. The number could be outrageous.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/closing-arguments-for-google-vs-oracle-trial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Suing Google For Using Java In Android OS</title>
		<link>http://www.javapronews.com/oracle-suing-google-for-using-java-in-android-os/</link>
		<comments>http://www.javapronews.com/oracle-suing-google-for-using-java-in-android-os/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 15:48:56 +0000</pubDate>
		<dc:creator>Mike Fossum</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6630</guid>
		<description><![CDATA[With the recent reports of Google and Oracle possibly settling out of court over a Java/Android patent-infringement case coming to and end, the trial began yesterday, 18 months after Oracle’s initial complaint. To recap, Oracle is suing Google over using Java in developing its Android OS, and seeks damages, which &#8230;]]></description>
			<content:encoded><![CDATA[<p>With the recent reports of <a href="http://www.webpronews.com/google-oracle-ordered-to-discuss-patent-settlements-before-trial-2012-03" target="_blank">Google and Oracle possibly settling out of court</a> over a Java/Android patent-infringement case coming to and end, the trial <a href="http://www.pcworld.com/businesscenter/article/253667/oraclegoogle_trial_starts_monday_outcome_could_affect_all_developers.html" target="_blank">began yesterday</a>, 18 months after Oracle’s initial complaint.</p>
<p>To recap, Oracle is suing Google over using Java in developing its Android OS, and seeks damages, which could be in the hundreds of millions of dollars, and more seriously, seeks to have the internet search giant change the code of the operating system. Google maintains that no infringement was committed, and that <a href="http://www.webpronews.com/googles-reponse-to-the-oracle-suit-2010-08" target="_blank">Oracle’s lawsuit is an attack on the open-source Java community</a>. As another hit to Oracle, 5 of the patents it originally held at the time of the initial complaint have been invalidated by the U.S. Patent and Trademark office, and another one is set to expire.</p>
<p>The main point of contention will be whether or not APIs (application programming interfaces) can be copyrighted, which could set a precedent for developers besides Google, and the trial could cover three stages – copyright claims, patent claims and a third stage to asses any damages to be awarded to Oracle, if the company wins the first two segments. If the final stage is met, damages will depend on whether or not Oracle can prove that Google willfully violated any patents, which automatically triples fines.</p>
<p>While both sides agree that Java is open-source and can’t be infringed upon, Oracle asserts that Java APIs are so complex that they can be considered to be protected like a creative work of art would be. Oracle also asserts that Google manipulated the APIs to build “not a compatible version of Java, but an incompatible one.” Google’s lawyers responded, stating, “Without the APIs, the Java programming language is deaf, dumb and blind.”</p>
<p>High level executives from both companies are expected to participate in trial, and both outfits will need to present video presentations to better convey some highly technical discussion to the members of the jury. It will be interesting to see how the case plays out.</p>
<p><a href="http://www.webpronews.com/google-oracle-trial-begins-today-2012-04">Comments</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/oracle-suing-google-for-using-java-in-android-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encryption of Network Communications using JSSE Part 6: Secure Data Transmission</title>
		<link>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-6-secure-data-transmission/</link>
		<comments>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-6-secure-data-transmission/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 17:11:29 +0000</pubDate>
		<dc:creator>Bryan Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6626</guid>
		<description><![CDATA[In the last section, we ran through all the code that is common between the client and server in our application. The final steps are almost identical to setting up standard sockets. First we will create the listening socket on the server side. If you don&#8217;t remember from last time, &#8230;]]></description>
			<content:encoded><![CDATA[<p>In the last section, we ran through all the code that is common between the client and server in our application. The final steps are almost identical to setting up standard sockets. First we will create the listening socket on the server side.<br />
<span id="more-6626"></span><br />
If you don&#8217;t remember from last time, <code>sslContext</code> is our <code>SSLContext</code> object that was created with the authentication keys we created. It is used to create socket factories, both server-side and client-side.</p>
<pre>
SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
SSLServerSocket sslServerSocket = ( SSLServerSocket ) sslServerSocketFactory.createServerSocket( port );
</pre>
<p>This <code>SSLServerSocket</code> can be used in the same way as any <code>ServerSocket</code>, including using the <code>accept()</code> method to begin listening for incoming connections. The code for the client-side should look familiar as well.</p>
<pre>
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
SSLSocket sslSocket = ( SSLSocket ) sslSocketFactory.createSocket( host, port );
</pre>
<p>No big surprises here. The <code>createSocket</code> method does the same thing it does for a regular <code>Socket</code> object; it opens up a connection to the specified <code>host</code> in the designated <code>port</code>. The only difference is that it encrypts data sent through it, and decrypts data it receives.</p>
<p>When you are setting up the server-side code, there are two settings in particular that you should consider when you create the socket. These are <code>setWantClientAuth()</code> and <code>setNeedClientAuth()</code>. Both methods take a boolean value as their only argument.</p>
<p><code>sslServerSocket.setWantClientAuth( true )</code> will tell any clients who are connecting to show their credentials, in the form of the TLS/SSL handshake. If the client does not provide credentials, then the connection will continue as normal. <code>sslServerSocket.setNeedClientAuth( true )</code> will request client credentials as well, but if the client does not provide them, the connection is severed. If you are creating an application where having a secure connection is important, this is the method for you.</p>
<p>As you have seen over the course of this series, there are several steps to take when setting up a secure socket connection. None of these steps are inherently difficult, but they must be executed correctly in order to ensure data security. Once you finish the setup, it is just using normal sockets to communicate again, but with the peace of mind that comes with knowing you are safe from third parties intercepting your data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-6-secure-data-transmission/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encryption of Network Communications using JSSE Part 5: The TLS/SSL Handshake</title>
		<link>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-5-the-tlsssl-handshake/</link>
		<comments>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-5-the-tlsssl-handshake/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 17:46:24 +0000</pubDate>
		<dc:creator>Bryan Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6623</guid>
		<description><![CDATA[In out last installment, we generated the keys required to encrypt and decrypt data on both the client and server sides of our client/server application. Today we will write the code necessary to send and receive encrypted information. The majority of the code required to set up a secure socket &#8230;]]></description>
			<content:encoded><![CDATA[<p>In out last installment, we generated the keys required to encrypt and decrypt data on both the client and server sides of our client/server application. Today we will write the code necessary to send and receive encrypted information. The majority of the code required to set up a secure socket is the same, whether you are on the client side or the server side. The only difference comes at the very end when setting up the actual socket, so all of this code can be copy-pasted into both your server and client classes.</p>
<p>The first thing we want to do is set up a <code>SecureRandom</code>, which is a random number generator random enough that it makes decrypting data without the private key extremely difficult.</p>
<pre>
SecureRandom secureRandom = new SecureRandom();
secureRandom.nextInt();
</pre>
<p>The call to <code>nextInt()</code> primes the number generator to start producing random numbers. We now need to create two <code>KeyStore</code> objects to pull in the public and private keys we created in the last article.</p>
<pre>
KeyStore publicKeyStore = KeyStore.getInstance( “JKS” );
publicKeyStore.load( new FileInputStream( “/path/to/client.public” ), “keystorePassword”.toCharArray() );

KeyStore privateKeyStore = KeyStore.getInstance( “JKS” );
privateKeyStore.load( new FileInputStream( “/path/to/server.private” ), “keystorePassword”.toCharArray() );
</pre>
<p>The above code uses the filenames for the server-side code. If you are writing the client-side code, you will need to use <code>”/path/to/server.public”</code> and <code>”/path/to/client.private”</code> instead. <code>“keystorepassword”</code> is the password you set for the keystore when you created it using <code>keytool</code>. When we create the <code>KeyStore</code> object, we are getting an instance from the static object with type “JKS”, which is simply the keystore format. Other formats exists, such as “JCEKS” and “PKCS12”, but “JKS” is the standard type used.</p>
<p>Now that we have our keys loaded into our application, we can create the object that actually authenticates the party on the other end of the socket, the <code>TrustmanagerFactory</code>.</p>
<pre>
TrustManagerFactory trustManagerFactory = TrustManagerFactory( “SunX509” );
trustManagerFactory.init( publicKeyStore );
</pre>
<p>The <code>TrustManagerFactory</code> is created like the <code>KeyStore</code> object, from the static class object. It is created with type “SunX509” which is the name of the trust management algorithm we are using in this example. We then load the public keystore into the trust manager. Next is the <code>KeyManagerFactory</code>, which is used to do all the actual encoding and decoding of data.</p>
<pre>
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance( “SunX509” );
keyManagerFactory.init( publicKeyStore, “keyStorePassword”.toCharArray() );
</pre>
<p>When creating the <code>KeyManagerFactory</code>, you can see we used “SunX509” again. You might also notice that we need the keystore password again. This is simply because when we used to password to set up the <code>KeyStore</code> object, it was only used to verify the integrity of the keystore, and now we are actually unlocking the keystore for use.</p>
<p>The final step in creating our secure socket connection is to create an <code>SSLContext</code> object.</p>
<pre>
SSLContext sslContext = new SSLContext.getInstance( “TLS” );
sslContext.init( keyManagerFactory.getKeyManagers(), TrustManagerFactory.getTrustManagers(), secureRandom );
</pre>
<p>The <code>SSLContext</code> object is created with the “TLS” protocol (which of course stands for “Transport Layer Security”), and initialized with the key managers and trust managers from the factories we created above, and also the <code>SecureRandom</code> we created. In our next installment we will use this <code>SSLContext</code> to create the sockets which will communicate with each other securely over the network.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-5-the-tlsssl-handshake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encryption of Network Communications using JSSE Part 4: Generating Security Certificates</title>
		<link>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-4-generating-security-certificates/</link>
		<comments>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-4-generating-security-certificates/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 17:55:28 +0000</pubDate>
		<dc:creator>Bryan Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6621</guid>
		<description><![CDATA[The series leading up to now has been focused on the basics of unencrypted communications. Well, now we&#8217;re ready to dig into the good stuff, data encryption. The first step to sending encrypted data over any network is to pick a cryptographic protocol. One of the most popular, especially for &#8230;]]></description>
			<content:encoded><![CDATA[<p>The series leading up to now has been focused on the basics of unencrypted communications. Well, now we&#8217;re ready to dig into the good stuff, data encryption.<br />
<span id="more-6621"></span><br />
The first step to sending encrypted data over any network is to pick a cryptographic protocol. One of the most popular, especially for Internet communications, is Transport Layer Security (TLS) which was actually created as an improvement upon Secure Socket Layer (SSL). TLS is an asynchronous cryptographic method, which means that we must actually generate four keys: <code>server.private</code>, <code>server.public</code>, <code>client.private</code>, and <code>client.public</code>. This is done using the <code>keytool</code> program.</p>
<pre>
keytool -genkeypair -keystore server.private
</pre>
<p>*Note: if you are using Java SE that is below version 6, you will have to use <code>-genkey</code> instead of <code>-genkeypair</code>.</p>
<p>You will be asked a series of questions which will be used to create your certificate. Make sure to make a note of your keystore password and your key password, as you will be needing them later. Do the same thing to create the client&#8217;s private key, only using <code>-keystore client.private</code> instead.</p>
<p>Now you will need to extract the public keys from the private keys. This also uses the <code>keytool</code> command.</p>
<pre>
keytool -export -keystore server.private -file temp.key
keytool -import -keystore server.public -file temp.key
</pre>
<p>Exporting will prompt you for the private keystore&#8217;s password, and importing will ask you to create a new password for the public keystore. Be sure to delete <code>temp.key</code> once you are finished. Repeat these steps to create the <code>client.private</code> keystore and extract the <code>client.public</code> keystore from it.</p>
<p>Once all this is finished you will have all 4 keystore files that you need to fully encrypt your network communications. These files need to be put in the correct places in order to be effective though. When you distribute your code, you will have 2 executables, one for the server and one for the client. The server needs to have it&#8217;s own private key and the client&#8217;s public key, and the client needs to have it&#8217;s own private key and the server&#8217;s public key, as shown in the table below.</p>
<table border=1>
<tr>
<th> Server </th>
<th> Client </th>
</tr>
<tr>
<td> server.private </td>
<td> client.private </td>
</tr>
<tr>
<td> client.public </td>
<td> server.public </td>
</tr>
</table>
<p>In part 5 of this series, we will begin integrating these keys into our basic socket client/server program and preparing to send encrypted data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-4-generating-security-certificates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encryption of Network Communications using JSSE Part 3: A Basic Socket Client</title>
		<link>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-3-a-basic-socket-client/</link>
		<comments>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-3-a-basic-socket-client/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 18:36:44 +0000</pubDate>
		<dc:creator>Bryan Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6617</guid>
		<description><![CDATA[In part 2 of this series, we created an unencrypted socket server that listens for connections from a client indefinitely. Now we need to write the client that will actually connect to that server. The client in the client/server relationship is the one that actually initiates the connection. All the &#8230;]]></description>
			<content:encoded><![CDATA[<p>In part 2 of this series, we created an unencrypted socket server that listens for connections from a client indefinitely. Now we need to write the client that will actually connect to that server.<br />
<span id="more-6617"></span><br />
The client in the client/server relationship is the one that actually initiates the connection. All the server can do is listen. In order to open that connection, the client must know the IP address (or DNS address) of the server, and which port it is listening on.</p>
<pre>
    public void connect() {
        String host = “localhost”;
        int port = 54321;

        try {
            // create a connection to the server
            Socket socket = new Socket( host, port );

            // setup the input/output connections
            BufferedReader socketIn = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
            PrintWriter socketOut = new PrintWriter( socket.getOutputStream() );
            BufferedReader stdIn = new BufferedReader( new InputStreamReader( System.in ) );

            //interact with the server
            System.out.println( socketIn.readLine() );
            socketOut.println( stdIn.readLine() );
            socketOut.flush();
            System.out.println( socketIn.readLine() );

            //close the socket
            socketIn.close();
            socketOut.close();
            stdIn.close();
            socket.close();
        } catch ( UnknownHostException ex ) {
            System.out.println( ex.toString() );
        } catch ( IOException ex ) {
            System.out.println( ex.toString() );
        }
    }
</pre>
<p>The client code is a little less complex than the server code, in that you don&#8217;t need to worry about the listening aspect of the connection. All we are doing here is opening a socket that is connecting to the given <code>host</code> and <code>port</code>.</p>
<p>As you can see, I have added a new input source, <code>stdIn</code>. This has nothing to do with the sockets, but what the sockets are doing. If you remember from part 2, the server will greet the incoming connection and ask for the user&#8217;s name. This client code will echo that greeting and allow the user to input their name to be transmitted through the socket and back to the server.</p>
<p>Part 4 of this series will gear up to the fun stuff, actually using JSSE to encrypt the data being sent over the network.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-3-a-basic-socket-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encryption of Network Communications using JSSE Part 2: A Basic Socket Server</title>
		<link>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-2-a-basic-socket-server/</link>
		<comments>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-2-a-basic-socket-server/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 18:00:29 +0000</pubDate>
		<dc:creator>Bryan Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6615</guid>
		<description><![CDATA[In part 1 of this series, we saw a general overview of what sockets are, and how JSSE is used to secure that data transfer. Now we&#8217;re going to dive in and write our own encrypted server/client system. Before we begin working with encryption, we should begin with the basics, &#8230;]]></description>
			<content:encoded><![CDATA[<p>In part 1 of this series, we saw a general overview of what sockets are, and how JSSE is used to secure that data transfer. Now we&#8217;re going to dive in and write our own encrypted server/client system.<br />
<span id="more-6615"></span><br />
Before we begin working with encryption, we should begin with the basics, so let&#8217;s start with a refresher on standard java sockets, which allow transfer of data between two computers over the internet. One of these computers is the “server” which constantly listens for incoming connections, and the other is the “client” which contacts the server and initiates the connection. We&#8217;ll start by creating a server to listen for incoming connections. We can choose whatever port we want, although it&#8217;s best to pick on that isn&#8217;t being used by anything else.</p>
<pre>
    public void listen() {
        int port = 54321;

        try {
            // create the listening socket
            ServerSocket serverSocket = new ServerSocket( port );
            while (true) {
                // listen for a connection
                Socket socket = serverSocket.accept();
                System.out.println( "Incoming connection from " + socket.getInetAddress() );

                // setup the input/output for the newly connected socket
                BufferedReader socketIn = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
                PrintWriter socketOut = new PrintWriter( socket.getOutputStream() );

                // interact with the client
                socketOut.println( "Thank you for connecting! What is your name? " );
                socketOut.flush();
                String name = socketIn.readLine();
                socketOut.println( "Hello " + name + "!" );
                socketOut.flush();

                // close the socket
                socketIn.close();
                socketOut.close();
                socket.close();
            }
        } catch ( IOException ex ) {
            System.out.println( ex.toString() );
        }
    }
</pre>
<p>You can see in the code that we are creating a new <code>ServerSocket</code> object. The <code>accept()</code> method of this object will block until a client attempts to make a connection, then will return the socket connection that is created. We then create the input and output streams for sharing data with the client. Once we have finished our interaction, we close both streams and the socket itself. An <code>IOException</code> is thrown if the socket fails to be created for any reason.</p>
<p>Part 3 of this series will continue our venture into basic socket communication.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-2-a-basic-socket-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encryption of Network Communications using JSSE Part 1: Introduction to Sockets</title>
		<link>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-1-introduction-to-sockets/</link>
		<comments>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-1-introduction-to-sockets/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 19:50:11 +0000</pubDate>
		<dc:creator>Bryan Young</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6610</guid>
		<description><![CDATA[The Java Secure Socket Extension (JSSE) is an extension of the JDK which takes standard java sockets and adds a layer of encryption to them. It does this through the use of Secure Socket Layer (SSL) and Transport Layer Security (TLS) technologies. In a nutshell, this lets you transfer information &#8230;]]></description>
			<content:encoded><![CDATA[<p>The Java Secure Socket Extension (JSSE) is an extension of the JDK which takes standard java sockets and adds a layer of encryption to them. It does this through the use of Secure Socket Layer (SSL) and Transport Layer Security (TLS) technologies. In a nutshell, this lets you transfer information over the internet without having to worry about anyone listening in, which is great for any number of client/server applications, and much more.</p>
<p>To understand what JSSE does, we first have to understand what a socket is, and what it does. A socket is basically just a virtual communication port that is used to transfer data between two machines. A socket on one machine connects to a socket on another machine and they can transmit data between each other. Super simple, right?</p>
<p>As we know, if data is sent over the internet it is susceptible to being intercepted by third parties. In order to protect our data from being read by those with malicious intent, we utilize JSSE to encrypt the data at the starting point, use sockets to transmit and receive that data, and JSSE again to unencrypt the data at the end point. This is done by utilizing public-key cryptography.</p>
<p>In public-key cryptography, each computer has two encryption keys, a private key that only it knows and a public key which is known by the other computer. Using our client/server relationship as an example, the client will have the client&#8217;s private key and the server&#8217;s public key. The public key is used to encrypt the data and, once encrypted, that data can only be decrytped by the server&#8217;s private key, thus even if a third party has the public keys, it cannot use them to retrieve the unencrypted data from the transfer.</p>
<p>Now that we have a basic understanding of sockets and encryption (a very, very basic understanding) we can start looking at actually using sockets to send information back and forth across a network. Look for part 2 of this series to start using sockets to transmit unencrypted data across a network, and further parts to add the encryption layer to that exchange.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/encryption-of-network-communications-using-jsse-part-1-introduction-to-sockets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Red Hat updates Openshift by bringing more Java Functionality</title>
		<link>http://www.javapronews.com/red-hat-updates-openshift-by-bringing-more-java-functionality/</link>
		<comments>http://www.javapronews.com/red-hat-updates-openshift-by-bringing-more-java-functionality/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 20:54:50 +0000</pubDate>
		<dc:creator>Qushawn Clark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.javapronews.com/?p=6606</guid>
		<description><![CDATA[The Enterprise Linux provider has been working on making it easier for Java developers to actually get things done on the cloud. OpenShift is, as they say on the official site, “a free, auto-scaling platform-as-a-service for Java, Ruby, PHP, Perl and Python applications” and is solely maintained by Red Hat. &#8230;]]></description>
			<content:encoded><![CDATA[<p>The Enterprise Linux provider has been working on making it easier for Java developers to actually get things done on the cloud. OpenShift is, as they say on the official <span style="color: #000080;"><span style="text-decoration: underline;"><a href="https://openshift.redhat.com/app/">site</a></span></span>, “a free, auto-scaling platform-as-a-service for Java, Ruby, PHP, Perl and Python applications” and is solely maintained by Red Hat.</p>
<p>&nbsp;</p>
<p>One big addition to the platform is the integration of Red Hat&#8217;s <span style="color: #000080;"><span style="text-decoration: underline;"><a href="http://www.jboss.org/tools">Jboss Tools</a></span></span>, a set of Eclipse plugins, that will allow developers to do all of the coding, maintenance and launching of applications right on the cloud. Not only are they not supporting that, but also <span style="color: #000080;"><span style="text-decoration: underline;"><a href="http://maven.apache.org/what-is-maven.html">Maven</a></span></span>, which allows for easy Java project management, and <span style="color: #000080;"><span style="text-decoration: underline;"><a href="https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins">Jenkins</a></span></span>, which as they state on their site “is an <span style="color: #000080;"><span style="text-decoration: underline;"><a href="https://wiki.jenkins-ci.org/display/JENKINS/Awards">award-winning</a></span></span> application that monitors executions of repeated jobs, such as building a software project or jobs run by cron.”</p>
<p>&nbsp;</p>
<p>They are implementing the full software development life-cycle now, which means that developers will never have to to be tied down to a home server again, as their data can always be accessed as long as they have some sort of connection. This is pretty big, considering that Java is not often something you think about when you think of cloud computing. The addition of Maven and Jenkins allows a great deal of automation as well, and while these jobs could be done on in-house infrastructure, it affords developers more time to do what they are good at when they don&#8217;t worry about their maintaining the infrastructure.</p>
<p>&nbsp;</p>
<p>If you are interested in OpenShift and arent using Red Hat, go on over to RH&#8217;s <span style="color: #000080;"><span style="text-decoration: underline;"><a href="http://www.redhat.com/">site</a></span></span> and check it out. Then after that, or if you had RH in the first place, head on over to <span style="color: #000080;"><span style="text-decoration: underline;"><a href="http://openshift.redhat.com/">http://openshift.redhat.com</a></span></span> and see if the platform is right for your needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javapronews.com/red-hat-updates-openshift-by-bringing-more-java-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

