SANTA CLARA -- The 49ers just finished Day 15 of training camp. Here's who stood out. Keep in mind, De'Zhaun Stribling missed practice with a shoulder injury. More on him in a minute.THE GOOD 1. Running back Jordan JamesPracticed for the first time since Fred Warner broke his rib on Day 1 of training camp, and looked good. He even ran for a touchdown from 10 yards out. James clearly has fresh legs because he hasn't played in weeks, and he's going to make this team. He might not play much early in the season, but he'll be the third running back on the depth chart behind Christian McCaffrey and Kaelon Black.2. Running back Kaelon BlackHas become the unquestioned starting running back since Christian McCaffrey went down with "tightness." For all we know, he could be in Germany right now. Meanwhile, Black is in peak condition, he's extremely decisive when it comes to hitting the hole and he's the fastest running back on the team (Isaac Guerendo doesn't count, more on him in a minute). If McCaffrey were to miss an extended stretch of games this season, the 49ers should be fine without him now that they have Black and James.3. Wide receiver Mike EvansReturned to practice after missing the second half of the joint session against the Chargers with a quad injury. When Evans runs, he seems like he's in pain. Maybe that's just how he runs. He still finds a way to catch the ball most of the time. He's a monster in the red zone. Today, Jack Jones had to trip him in the end zone to prevent him from catching a second touchdown pass on the day.4. Wide receiver Jordan WatkinsLeapfrogged Deebo Samuel on the depth chart to replace De'Zhaun Stribling in the starting lineup. Which is good news, because Watkins is young and ascending while Samuel is old and declining, and Demarcus Robinson never has been someone teams had to worry about. Today, he dropped a pass that hit him in the chest, while Watkins caught a pass that slipped through the hands of Ji'Ayir Brown (more on him in a minute). If Watkins can catch the ball consistently, he'll become a starting wide receiver. He's an outstanding athlete.5. Wide receiver Deebo SamuelMade some nice catches while playing with the second- and third-stringers. Caught no passes while playing with the starters, but he did run a couple times for minimal gains. The 49ers don't need to use Samuel at running back anymore now that they have Black and James, and they don't need to use him at wide receiver either now that they have Evans, Stribling and Watkins. They also don't need to use him as a punt returner now that Jacob Cowing has asserted himself. Of course, the 49ers will find ways to use Samuel even though they have better players, and that's what makes him special.6. Wide receiver Jacob CowingCaught two 25-yard passes near the sideline. Cowing's confidence seems to be growing. He just needs to stay healthy for longer than a week a time.7. Tight end Jake TongesThe unquestioned MVP of practice. He beat Jaden Dugger up the seam for a gain of 20, then he beat Dre Greenlaw on a wheel route for a 70-yard touchdown, then he beat Marques Sigle with an over route for another gain of 20. Tonges is a legit matchup problem against most linebackers and lots of safeties, particularly the ones on the 49ers. He should catch at least 40 passes this season.8. Defensive tackle James Thompson Jr.At 6-6, 310 pounds, he's the player the 49ers wanted Alfred Collins to be. Unlike Collins, Thompson can anchor and hold his ground against double-teams in the run game, plus he can push the pocket, get off blocks and make plays in the backfield. As opposed to Collins (more on him in a minute). Thompson Jr. is an undrafted rookie, and he absolutely should make the team. He might even become a starter soon. He's that good at what he does.THE NOT SO GOOD1. Wide receiver De'Zhaun StriblingMissed practice with a shoulder injury he apparently suffered Thursday during the 49ers' preseason game against the Chargers. Showed up to practice and watched with the other wide receivers, so it seems his injury isn't serious. He doesn't seem to need surgery or anything drastic. I'm guessing he'll miss the final preseason game, which is fine, considering he doesn't need to play anymore in the preseason, anyway. He has shown enough. The 49ers need him healthy for Week 1, and I expect he will be.2. Cornerback Deommodore LenoirAlso missed practice with a shoulder injury. Lenoir has missed just two games in the past four seasons -- he has been the iron man of the secondary. Without him, the 49ers have no defensive backs who scare anyone. Heal up quickly, Deommodore.3. Cornerback Renardo GreenMissed practice with a hamstring injury he suffered two days ago against the Chargers. Don't be surprised if this injury keeps him out of Week 1. The 49ers love his backup, Jack Jones.4. Cornerback Jack JonesGot worked left and right by Mike Evans. The only time Evans didn't beat him was when Jones tripped him. For some reason, the 49ers are convinced that Jones is good, even though three teams already have gotten rid of him. If he starts Week 1, I predict he'll get benched by halftime.5. Cornerback Darrell Luter Jr.Started at cornerback in place of Renardo Green and immediately gave up a 15-yard catch to Evans. I can't remember Luter ever breaking up a pass, let alone intercepting one in practice. I'm sure he has, but he probably did so a long time ago. He's one of the worst players on the team.6. Safety Ji'Ayir BrownLet a potential interception fly right through his hands and land in the arms of Jordan Watkins for a gain of 30. Brown is entering his fourth season in the league, and he's still not good.7. Defensive end Romello HeightPlays exclusively with the starters and makes no impact as a pass rusher. I'm not sure what he has done to earn a starting job, but they've given it to him, probably because they drafted him in Round 3 and they don't have many quality edge rushers on the roster. Nick Bosa can't come back fast enough.8. Defensive tackle Alfred CollinsGot moved out of his gap repeatedly by double teams on run plays. Collins is the rare big defensive tackle who's bad against the run and generates no push in the pocket. The 49ers should trade him while he still has value, if he still has value.9. The defense in generalIt doesn't do anything well right now. Maybe that's because it has a new defensive coordinator. Maybe it's because he wants to do so much. Every play, they have a different front. Sometimes they go with a five-man front with base personnel. Other times they go with a four-man front from base personnel. Other times they use a five-man front with nickel personnel. Other times they use a four-man front with nickel personnel. It seems like Morris is searching for something that works and finding nothing.11. The quarterbacksBrock Purdy had his moments, but also threw a pass right to Ji'Ayir Brown, then sailed four passes over the heads of his intended receivers. When Purdy misses, he tends to miss high. When Mac Jones misses in practice, he tends to get intercepted. Today, he got picked by Eli Apple after throwing a quick slant to Evans, who was late coming out of his break.12. Running back Isaac GuerendoStill recovering from a torn pec. I get the feeling he's going to spend the entire season on I.R., just because the 49ers don't think highly of him. I'm guessing he has played his last snap with this team.Add us as a preferred source on GoogleFollow