Holland captained the NSW Under-16 side at the 2005 Qantas National Talent Identification Championships in Parklea, a tournament the NSW team ultimately won. He was a 2007 AIS Football scholarship holder and was an influential player in their successful campaign in the Victorian Premier League.

Holland made an impressive A-League debut with the Newcastle Jets playing two games as a short term injury replacement player. He scored a goal against Wellington Phoenix in his first game, making him the youngest player to score in the A-League.[3]

In October 2007 he signed a full-time 2-year professional contract with the Newcastle Jets, despite interest from his home town club and Newcastle's rivals the Central Coast Mariners.[4] Holland had previously made three appearances for the Mariners on a short term contract during the 2006 A-League Pre-Season Challenge Cup.

Holland was part of the Newcastle Jets team which won the 2008 A-League Grand Final against the Central Coast Mariners. He was involved in a controversy during second-half injury time when he handballed inside the penalty area. Referee Mark Shield failed to spot the handball and did not award a penalty.[5] Holland later stated that he didn't feel the ball hit his arm and that it wasn't an "intentional" act.

On 11 January 2009, Dutch club AZ Alkmaar completed the signing of the highly rated Australian midfielder for $650,000 (€350,000) on a four-and-a-half year contract from the Newcastle Jets.[6] He had earlier successfully trialled at the club.

In September 2016, Holland signed a two-year contract with Adelaide United, returning to the A-League.[10] On 12 January 2017, Adelaide United's coach Guillermo Amor confirmed that Holland exited Adelaide United to go to China.[11]

James is an Australian Under-20 and Under-23 national team representative, a striker in this squad playing alongside Marko Jesic, Holland's good friend. He made his full debut for the Socceroos against Singapore in 2008, and was named in the squad to face Ghana on 23 May 2008. He played in the World Cup qualifier against China on 22 June 2008, and was substituted for David Williams.

He has since captained the Young Socceroos AFF U19 Championship after defeating Korea Republic 3–1 on penalties.[14] James Holland was selected for the Young Socceroos Squad for the 2009 FIFA U-20 World Cup in Egypt, he was also named captain for the Young Socceroos. He scored a penalty in the first match against the Czech Republic in the 94th minute in the 2–1 loss, he had missed the first penalty but it was re-taken for infringement. He was selected as a member of Australia's 2014 FIFA World Cup squad in Brazil. Holland remained an unused substitute throughout the tournament.